{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Neural Networks 神经网络\n",
    "在这个练习中，将实现反向传播算法来学习神经网络的参数。依旧是上次预测手写数数字的例子。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.io import loadmat\n",
    "import scipy.optimize as opt\n",
    "from sklearn.metrics import classification_report  # 这个包是评价报告"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing the data 可视化数据\n",
    "这部分我们随机选取100个样本并可视化。训练集共有5000个训练样本，每个样本是20*20像素的数字的灰度图像。每个像素代表一个浮点数，表示该位置的灰度强度。20×20的像素网格被展开成一个400维的向量。在我们的数据矩阵X中，每一个样本都变成了一行，这给了我们一个5000×400矩阵X，每一行都是一个手写数字图像的训练样本。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_mat(path):\n",
    "    '''读取数据'''\n",
    "    data = loadmat('ex4data1.mat')  # return a dict\n",
    "    X = data['X']\n",
    "    y = data['y'].flatten()\n",
    "    \n",
    "    return X, y  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_100_images(X):\n",
    "    \"\"\"随机画100个数字\"\"\"\n",
    "    index = np.random.choice(range(5000), 100)\n",
    "    images = X[index]\n",
    "    fig, ax_array = plt.subplots(10, 10, sharey=True, sharex=True, figsize=(8, 8))\n",
    "    for r in range(10):\n",
    "        for c in range(10):\n",
    "            ax_array[r, c].matshow(images[r*10 + c].reshape(20,20), cmap='gray_r')\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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wTkSjUbdnFMHm//7v/8LRe6KEkzG0nWqO01pc+23334D4MorrwRSH2v/2D399NOAF+McMGAAALfeequTU9+38847A3D++ecDnvdEf0/n3ldR/OP7999/A7BgQaLRTtu2bQGoV68eAAceeCAA5557LpDwVLVv3x5IPe9D8zQajTrvzAcffADA448/DngWrzjkkEO47rrril2H5rY8PfICyOM5depUt0aaN29e7D3lYZanYRiGYSRJaJan/Mn6KatLT3dZfG+//bazzhQPlRaj+KH+HybSEmVlPv/88y6D9rDDDgM8y6Z169aAlyHcpk0b9zf9FN999x3gxTkU83388cedpq9YXRjarlDM86+//gJw2p402/K0vqDmrmzM6667zmlcDRo0SElWP7Vq1XJp+5JT2XnBrN4//vjD3SvFVYJlQOvXrwe8OFYYBLMxx48f78ZY91H3T2P+3nvvAYk4ieZ78PN0DdLQpblPmzbNzcUw41yRSMTd+//+97+A5/3RvNY1btiwwY2lSiVkBcuz8ueffwLwzjvvAPD55587C0/yK86eTvyxN80ZZXoOHToUgB9//BEombFat25dDj74YKC4tyAVsrOzmT59OuBZnNrPhgwZAnjry2/FSPZ+/foB3hxas2ZNsevMBME4YrDsZMGCBVx//fWAl9mu/U05DKpI0Hz59NNP6dKlC5C65enPP3j55ZcBuOqqqwDv/mlv1VrdYostnPzyJOq1ygvZY489nKz6fUUy6YOY5WkYhmEYSRKa5Tlz5kzAe8pvu+22gPe0l3YzZswYl6F1wAEHAIk6SvCyW9W6KsxYoTROWSvfffedi2PK8pIWE9Q+4vG4+11QY9VnXH311YAXA503b57TJsO04hTb00kg0m6Vqaxs09I0a2ly0rI+/PBDwIvNbNiwgX333ReA4447DvCsvMrgzwxWNptis7L2dV8UEzzrrLPc3FGNpO6LXistWNpuXl6e81ZUNsMv6Jn45JNPnJUoy01jrWy9hx56CIDTTz+9hOUpOaQFayzkGRgzZoyLJyUTZ6kI+s7Zs2cDXv6Bxl7zYM6cOdx9990A3HPPPcXeIwtj6tSpgGfV5ebmctRRRwFw9NFHA9CtW7dQ5Pajsda+obW0bNkyvvjiCwAXn1dbT38mPXjzY9CgQdxyyy1A6mPs/w5ZQ2p0oFi89rzyLK9gXDbd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5ErW74NKTjpkzMrKct+rz69du3ap35edne1cpLfccguAS3zo1asXAFdccQUA7dq1AzIzT3S/9SD/9ddfAdh+++2BmvvwDCoqf/31FwDz5s0DYP369QB0794dgNzc3BJKblAxSre8mst6WL7xxhsAvPTSSwAsX74cgNWrVwNw6KGH8sQTTwCeslOdzxL2j+c/5SFvblvDMAzDSJJ/rOWZk5Pj3JZyb0kLlHWw1VZbAdCqVStWrVoFeO6Vo446CkhoiAAPPPAAAC1atAAyb4FK81PyTyQSca5laepfffUVAGeffTbgWdb6+6+//sratWsBqF+/flrklFYqOadMmQJ4Ftt5553HYYcdBsC3334LwO233w7AwoULAWjQoAEA5557LgD7779/aMkVshDmz5/PpZdeCnju7REjRgCw9957A949jsViPPbYYwD861//ArzknOeffx7wLPm7774bSNyfdGvouq+LFy8G4N577wVwskaj0Qq5y6uSoIUYjUZ5/fXXAXj77bcB+PzzzwHPstZ7evToAcA111zDnnvuWernpRN5ozZu3OjmgebQkiVLAJxr9vTTTwc81/onn3zCsmXLgITlDNXT8tQck8V8zz33uDV07bXXAtVT7jAwy9MwDMMwkiTtlmcwmF9aIkpZWq9+H6bmojjZ0qVLOfPMMwGYM2cOAI8//jgA/fr1A6Bhw4ZAInYkK2PdunUAPPfcc4AXyxoyZAgAo0ePBqBu3boZiSlJy1u5ciWAK4xetWoVO++8M5CwnAEuu+wywNPU1YFk6dKlAPz5558uzhemhh6JRNx9l7z6zoceegiA//73v0DCyvvuu+8AePPNNwEvFq15oHuhWFebNm1o06ZNsb8li+TT9T/wwAOMHz8e8GKdX375JQD77bdfMXk2btzoLOgtt9wSgNtuuw2ARx55BIAxY8YAMHDgQAB69+6dFu9EJBJxcimOprE5+uijgeJlEbIYdI1VUcYSj8dLlPjo/7L6ZX0tWLCAO+64A/BiuTvttBMAJ5xwAgBTp04F4IMPPgDgggsu4L333gM8z1A6rSFdg5J/Ro0axX333Qd4XpNbb70VgCOPPBLw4s+vvPIKkPBcyFsRplcgEok4i3hTCVXRaLRELkfwtZovutZ33nnHxf+vv/76Yt+zuWGWp2EYhmEkSeiWpzQVaV/KfFM8Yu7cucyaNQuA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/vrrATjrrLOch6Z79+6hy1xWKcQvv/wCwMiRI3nttdcAL49CnivFazNleUpW/Vy4cCGQSCCD4p6R4BrQ/99//30Ad026V1tvvTX3338/AM2aJbrDpTLH/eOq7y7r84LX5ZdX72nSpAngWaD/+9//AHj++eedB1HXn+razMrK4scffwTgpJNOArz1qnZ+c+bMARIelDvuuKPY+8vaf/zxZsmYzNwxy9MwDMMwkiQUy9P/ZL/yyisBOO+88wCYOnUq4GkKW2yxhYufLFmyBIBvvvkGwDUi8BdkpxNZWa+++irgaX1PPPEE4MXc1qxZ47InV65cCVS/YvfyCJaJ6Lo13rKm169fT/v27QFKZDSmi6CF8euvvzoLafz48cXk1nUo1tWpUycg4TFIVbuVxinLsHv37q5sY9GiRYBnaV5++eUAHHLIIQC0aNHCySZPhOaLvBtVUeKkdSlv0A8//ADAww8/DMB+++3n5kBQPr1Xc2X//fcHYLfddnOW51lnnRWarFpPuo+KaT3++OOAF1OrU6eOy/Z98MEHAdyczSSRSMSN0b///W/Ak1WNJc4991wAjjjiCGfR6/p0vf369QMS3hPwrmnMmDHccMMNQGJ++d+brJx+/H16ldMhglnl/gYawTiiZNFnaC3Onj3beW+aN29eabn9ZGdnOwtdGe7yCh588MEA3HTTTUBibh944IGA58nUmtQalYdA62LHHXfk0EMPBbxnT0W8ZWZ5GoZhGEaShF7nufXWWwPeU14albSZjRs3omPNpNHLsgjWPKWzjiwSiTiNRDG1Hj16ANCuXTvAi6n8/PPP/PnnnwD88ccfxWSt6HdBemO4wThFdna2G0dZ1DplQRaIMkFV8FxQUOCsLcUVw46BBms2FQuUZfHggw+6mOKJJ54IeIX5//rXvwB4+umni8kfrJGrDLo3+qx+/fq52M2m3hOLxdw41a5dG8DFSzXXU7EekkVjfM899wCJ+C3AhRdeWEzGa665xv1OsdpgzEfXqPlet25dGjRoELrM+h7VUytnYosttgBwGZyDBw92NYay0hRbyySRSMTF5mXBaD5qDOfPn+9+P3jwYIASNZDydOyxxx4ALF26FPBioami+/b7778DMGTIEE4++eRi3yl5tSblibr33nvdXLrssssAL8Yo+eWh0ntzc3Pd78La77Kzs91pKxqvrl27AokG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R9cbdTwrFou5a5C3QRnAUgBSwxdddJGLG+tn77jjDgBnHUr1y2Mwf/58Z/k2a9YMSM81aczvvvsu4KkF1SXffvvtAOy7774u21po3V944YXVHkcySB1v2LCBefPmAbjTQNasWQN46l7rYuPGje7fPfHEE4CnShVjkppTXGzgwIGRqs/KmglonPF4nO+++w7w4oPff/894D2TuhdqJZeTkxNJzFnrQ/P59NNPA95cqW69efPmXHnllQCccsopgLdO586dW+Y7o6pT1Fj962PBggWA1yxF8fkwqlz35fjjjwcS60iew1SRStcaHDVqFB999BEAQ4cOBRLZyOCpZP+a1LVq3UvdB2Pius5U17MpT8MwDMMISWTKUwpIfmdZCMXFxS77U3E7tYB67733ADjmmGMATzFJmaYDKZwvvvjCWV7yiR988MGAVzN53333AXD11Vc7JaNMVSlNjVXWp6571apVTiWmmjUXtELDqilZWJpnfR5wwAGAF6OJSkn4s2WXL18OwMSJEwE466yzAM+SVMeSG2+80WUqK7588803A3DqqaeWua6OHTsCMG/evLS3cozFYvzzzz9A4v6DlxGpzD6/1RtUNmqNqDVcUZ2hrqM6KllWup6hMWPGuBi55rZ9+/YA7LrrroCnnEtKShg5ciSQ8K4AjB8/3l0TePFmPSNNmjShZ8+eZX6muvgzQDWPWjuKxT7//PNAoluWMpqlRlTrrPWsZ3O33XYDEnEy3Yd0xRL9+QKqcVTHLu15iscNHz7c1Usq21Zxc9V7pmMtVIXie4sXL+a6664DvCx+XYsUo7LYqyLYWnWHHXYAEt6Nr7/+ulpj1b3X/vz+++9zyCGHAJ4XKhiD92foai2pfl3rXTk12isOPPBAAPr375/SWo7cbatPf/d99UVUQFmLTIlESlZI50LS5MoVu3r1auf+0YMlN6Y+tdn8/fffzu2iGysXkdwv+rM23JYtW9Z4YbweChkDGo+SJqJ2EWkTmThxotuETzvtNMArBtfc77333m7MctfssssuAM79rY1HbjqVCeXn57sHPl1znpOT4+ZNL8KBAwcCXlKWNuuK2kfqAVXyhFxHcoOWlJTQv39/wEu6qM5610tw2LBhLnkqWL6j79ezOGHCBLdh3nXXXQDlknEUbtGzsmrVqrQlQflLaJTko3mSwawEPLlA//nnH5ck1717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\n",
      "text/plain": [
       "<Figure size 576x576 with 100 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X,y = load_mat('ex4data1.mat')\n",
    "plot_100_images(X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Model representation 神经网络模型表示\n",
    "这个网络有三层，输入层，隐藏层，输出层。我们的输入是数字图像的像素值，因为每个数字的图像大小为20*20，所以我们输入层有400个单元（这里不包括总是输出要加一个偏置单元）。\n",
    "![神经网络](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi04MmNhOWIzYzM1ODNiOGEwLnBuZw)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## load train data set 读取数据\n",
    "首先我们要将标签值（1，2，3，4，…，10）转化成非线性相关的向量，向量对应位置（y[i-1]）上的值等于1，例如y[0]=6转化为y[0]=[0,0,0,0,0,1,0,0,0,0]。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OneHotEncoder\n",
    "def expand_y(y):\n",
    "    result = []\n",
    "    # 把y中每个类别转化为一个向量，对应的lable值在向量对应位置上置为1\n",
    "    for i in y:\n",
    "        y_array = np.zeros(10)\n",
    "        y_array[i-1] = 1\n",
    "        result.append(y_array)\n",
    "    '''\n",
    "    # 或者用sklearn中OneHotEncoder函数\n",
    "    encoder =  OneHotEncoder(sparse=False)  # return a array instead of matrix\n",
    "    y_onehot = encoder.fit_transform(y.reshape(-1,1))\n",
    "    return y_onehot\n",
    "    ''' \n",
    "    return np.array(result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 获取训练数据集，以及对训练集做相应的处理，得到我们的input X，lables y。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'\\n((5000, 401), (5000, 10))\\n'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "raw_X, raw_y = load_mat('ex4data1.mat')\n",
    "X = np.insert(raw_X, 0, 1, axis=1)\n",
    "y = expand_y(raw_y)\n",
    "X.shape, y.shape\n",
    "'''\n",
    "((5000, 401), (5000, 10))\n",
    "'''"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## load weight 读取权重\n",
    "这里提供了已经训练好的参数θ1，θ2，存储在ex4weight.mat文件中。这些参数的维度由神经网络的大小决定，第二层有25个单元，输出层有10个单元(对应10个数字类)。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def load_weight(path):\n",
    "    data = loadmat(path)\n",
    "    return data['Theta1'], data['Theta2'] "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((25, 401), (10, 26))"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "t1, t2 = load_weight('ex4weights.mat')\n",
    "t1.shape, t2.shape\n",
    "# ((25, 401), (10, 26))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 展开参数\n",
    "当我们使用高级优化方法来优化神经网络时，我们需要将多个参数矩阵展开，才能传入优化函数，然后再恢复形状。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def serialize(a, b):\n",
    "    '''展开参数'''\n",
    "    return np.r_[a.flatten(),b.flatten()]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10285,)"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "theta = serialize(t1, t2)  # 扁平化参数，25*401+10*26=10285\n",
    "theta.shape  # (10285,)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def deserialize(seq):\n",
    "    '''提取参数'''\n",
    "    return seq[:25*401].reshape(25, 401), seq[25*401:].reshape(10, 26)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Feedforward 前向传播\n",
    "确保每层的单元数，注意输出时加一个偏置单元，s(1)=400+1，s(2)=25+1，s(3)=10。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi0wN2UzYzBkZGZiYjlhODAyLnBuZw)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(z):\n",
    "    return 1 / (1 + np.exp(-z))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def feed_forward(theta, X,):\n",
    "    '''得到每层的输入和输出'''\n",
    "    t1, t2 = deserialize(theta)\n",
    "    # 前面已经插入过偏置单元，这里就不用插入了\n",
    "    a1 = X\n",
    "    z2 = a1 @ t1.T\n",
    "    a2 = np.insert(sigmoid(z2), 0, 1, axis=1)\n",
    "    z3 = a2 @ t2.T\n",
    "    a3 = sigmoid(z3)\n",
    "    \n",
    "    return a1, z2, a2, z3, a3 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "a1, z2, a2, z3, h = feed_forward(theta, X)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cost function 代价函数\n",
    "![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi1kMGU2ZTA5ZTdkYzlhMDQ0LnBuZw)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def cost(theta, X, y):\n",
    "    a1, z2, a2, z3, h = feed_forward(theta, X)\n",
    "    J = 0\n",
    "    for i in range(len(X)):\n",
    "        first = - y[i] * np.log(h[i])\n",
    "        second = (1 - y[i]) * np.log(1 - h[i])\n",
    "        J = J + np.sum(first - second)\n",
    "    J = J / len(X)\n",
    "    return J"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2876291651613187"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cost(theta, X, y)  # 0.2876291651613189"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Regularized cost function 正则化代价函数\n",
    "![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi04Zjc3ZGMzODA4MDBlNTMwLnBuZw)\n",
    "注意不要将每层的偏置项正则化。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def regularized_cost(theta, X, y, l=1):\n",
    "    '''正则化时忽略每层的偏置项，也就是参数矩阵的第一列'''\n",
    "    t1, t2 = deserialize(theta)\n",
    "    reg = np.sum(t1[:,1:] ** 2) + np.sum(t2[:,1:] ** 2)  # or use np.power(a, 2)\n",
    "    return l / (2 * len(X)) * reg + cost(theta, X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.3837698590909234"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regularized_cost(theta, X, y, 1)  # 0.38376985909092354"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Backpropagation 反向传播"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Sigmoid gradient S函数导数\n",
    "$$g'(z)={\\frac{dg(z)}{dz}}=g(z))(1-g(z))$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid_gradient(z):\n",
    "    return sigmoid(z) * (1 - sigmoid(z))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Random initialization 随机初始化\n",
    "当训练神经网络时，随机初始化参数是很重要的，可以打破数据的对称性。一个有效的策略是在均匀分布(−e，e)中随机选择值，我们可以选择 e = 0.12 这个范围的值来确保参数足够小，使得训练更有效率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def random_init(size):\n",
    "    '''从服从的均匀分布的范围中随机返回size大小的值'''\n",
    "    return np.random.uniform(-0.12, 0.12, size)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Backpropagation 反向传播\n",
    "![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi1mNmUyYjRiYjE4OTJlZDJkLnBuZw)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a1 (5000, 401) t1 (25, 401)\n",
      "z2 (5000, 25)\n",
      "a2 (5000, 26) t2 (10, 26)\n",
      "z3 (5000, 10)\n",
      "a3 (5000, 10)\n"
     ]
    }
   ],
   "source": [
    "print('a1', a1.shape,'t1', t1.shape)\n",
    "print('z2', z2.shape)\n",
    "print('a2', a2.shape, 't2', t2.shape)\n",
    "print('z3', z3.shape)\n",
    "print('a3', h.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient(theta, X, y):\n",
    "    '''\n",
    "    unregularized gradient, notice no d1 since the input layer has no error \n",
    "    return 所有参数theta的梯度，故梯度D(i)和参数theta(i)同shape，重要。\n",
    "    '''\n",
    "    t1, t2 = deserialize(theta)\n",
    "    a1, z2, a2, z3, h = feed_forward(theta, X)\n",
    "    d3 = h - y # (5000, 10)\n",
    "    d2 = d3 @ t2[:,1:] * sigmoid_gradient(z2)  # (5000, 25)\n",
    "    D2 = d3.T @ a2  # (10, 26)\n",
    "    D1 = d2.T @ a1 # (25, 401)\n",
    "    D = (1 / len(X)) * serialize(D1, D2)  # (10285,)\n",
    "    \n",
    "    return D\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Gradient checking 梯度检测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gradient_checking(theta, X, y, e):\n",
    "    def a_numeric_grad(plus, minus):\n",
    "        \"\"\"\n",
    "        对每个参数theta_i计算数值梯度，即理论梯度。\n",
    "        \"\"\"\n",
    "        return (regularized_cost(plus, X, y) - regularized_cost(minus, X, y)) / (e * 2)\n",
    "   \n",
    "    numeric_grad = [] \n",
    "    for i in range(len(theta)):\n",
    "        plus = theta.copy()  # deep copy otherwise you will change the raw theta\n",
    "        minus = theta.copy()\n",
    "        plus[i] = plus[i] + e\n",
    "        minus[i] = minus[i] - e\n",
    "        grad_i = a_numeric_grad(plus, minus)\n",
    "        numeric_grad.append(grad_i)\n",
    "    \n",
    "    numeric_grad = np.array(numeric_grad)\n",
    "    analytic_grad = regularized_gradient(theta, X, y)\n",
    "    diff = np.linalg.norm(numeric_grad - analytic_grad) / np.linalg.norm(numeric_grad + analytic_grad)\n",
    "\n",
    "    print('If your backpropagation implementation is correct,\\nthe relative difference will be smaller than 10e-9 (assume epsilon=0.0001).\\nRelative Difference: {}\\n'.format(diff))\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-31-755873ea3033>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mgradient_checking\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtheta\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;36m0.0001\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;31m#这个运行很慢，谨慎运行\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<ipython-input-28-8f77b22c5177>\u001b[0m in \u001b[0;36mgradient_checking\u001b[1;34m(theta, X, y, e)\u001b[0m\n\u001b[0;32m     12\u001b[0m         \u001b[0mplus\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mplus\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     13\u001b[0m         \u001b[0mminus\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mminus\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 14\u001b[1;33m         \u001b[0mgrad_i\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0ma_numeric_grad\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mplus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mminus\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     15\u001b[0m         \u001b[0mnumeric_grad\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgrad_i\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     16\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-28-8f77b22c5177>\u001b[0m in \u001b[0;36ma_numeric_grad\u001b[1;34m(plus, minus)\u001b[0m\n\u001b[0;32m      4\u001b[0m         \u001b[0m对每个参数theta_i计算数值梯度\u001b[0m\u001b[0;31m，\u001b[0m\u001b[0m即理论梯度\u001b[0m\u001b[0;31m。\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m         \"\"\"\n\u001b[1;32m----> 6\u001b[1;33m         \u001b[1;32mreturn\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mregularized_cost\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mplus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mregularized_cost\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mminus\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0me\u001b[0m \u001b[1;33m*\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m     \u001b[0mnumeric_grad\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32m<ipython-input-21-d5cdfc55bfeb>\u001b[0m in \u001b[0;36mregularized_cost\u001b[1;34m(theta, X, y, l)\u001b[0m\n\u001b[0;32m      3\u001b[0m     \u001b[0mt1\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mt2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdeserialize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtheta\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[0mreg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mt1\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m**\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mt2\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m**\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m)\u001b[0m  \u001b[1;31m# or use np.power(a, 2)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m     \u001b[1;32mreturn\u001b[0m \u001b[0ml\u001b[0m \u001b[1;33m/\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m2\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mreg\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mcost\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mtheta\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<ipython-input-19-82e8dbacbf94>\u001b[0m in \u001b[0;36mcost\u001b[1;34m(theta, X, y)\u001b[0m\n\u001b[0;32m      4\u001b[0m     \u001b[1;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m         \u001b[0mfirst\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mh\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m         \u001b[0msecond\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m*\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m1\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0mh\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      7\u001b[0m         \u001b[0mJ\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mJ\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfirst\u001b[0m \u001b[1;33m-\u001b[0m \u001b[0msecond\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      8\u001b[0m     \u001b[0mJ\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mJ\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "gradient_checking(theta, X, y, e= 0.0001)#这个运行很慢，谨慎运行"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Regularized Neural Networks 正则化神经网络\n",
    "![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMTAyMzI2Mi03YmEwY2FjYTExY2FkMTQ4LnBuZw)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "def regularized_gradient(theta, X, y, l=1):\n",
    "    \"\"\"不惩罚偏置单元的参数\"\"\"\n",
    "    a1, z2, a2, z3, h = feed_forward(theta, X)\n",
    "    D1, D2 = deserialize(gradient(theta, X, y))\n",
    "    t1[:,0] = 0\n",
    "    t2[:,0] = 0\n",
    "    reg_D1 = D1 + (l / len(X)) * t1\n",
    "    reg_D2 = D2 + (l / len(X)) * t2\n",
    "    \n",
    "    return serialize(reg_D1, reg_D2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Learning parameters using fmincg 优化参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "def nn_training(X, y):\n",
    "    init_theta = random_init(10285)  # 25*401 + 10*26\n",
    "\n",
    "    res = opt.minimize(fun=regularized_cost,\n",
    "                       x0=init_theta,\n",
    "                       args=(X, y, 1),\n",
    "                       method='TNC',\n",
    "                       jac=regularized_gradient,\n",
    "                       options={'maxiter': 400})\n",
    "    return res\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "     fun: 0.46876481849087326\n",
       "     jac: array([ 3.80332607e-03, -2.11248326e-12,  4.38829369e-13, ...,\n",
       "        4.29527975e-04,  2.46493711e-04, -2.62210371e-04])\n",
       " message: 'Converged (|f_n-f_(n-1)| ~= 0)'\n",
       "    nfev: 216\n",
       "     nit: 16\n",
       "  status: 1\n",
       " success: True\n",
       "       x: array([-1.69999781, -0.02721994,  0.08433957, ..., -0.11916115,\n",
       "        1.94806096, -2.47635592])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "res = nn_training(X, y)#慢\n",
    "res"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "def accuracy(theta, X, y):\n",
    "    _, _, _, _, h = feed_forward(res.x, X)\n",
    "    y_pred = np.argmax(h, axis=1) + 1\n",
    "    print(classification_report(y, y_pred))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           1       0.98      0.99      0.98       500\n",
      "           2       0.98      0.98      0.98       500\n",
      "           3       0.96      0.97      0.97       500\n",
      "           4       0.98      0.97      0.98       500\n",
      "           5       0.97      0.97      0.97       500\n",
      "           6       0.99      0.98      0.98       500\n",
      "           7       0.99      0.98      0.98       500\n",
      "           8       0.97      0.97      0.97       500\n",
      "           9       0.97      0.96      0.97       500\n",
      "          10       0.98      0.99      0.99       500\n",
      "\n",
      "    accuracy                           0.98      5000\n",
      "   macro avg       0.98      0.98      0.98      5000\n",
      "weighted avg       0.98      0.98      0.98      5000\n",
      "\n"
     ]
    }
   ],
   "source": [
    "accuracy(res.x, X, raw_y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualizing the hidden layer 可视化隐藏层\n",
    "理解神经网络是如何学习的一个很好的办法是，可视化隐藏层单元所捕获的内容。通俗的说，给定一个的隐藏层单元，可视化它所计算的内容的方法是找到一个输入x，x可以激活这个单元（也就是说有一个激活值 $a_i^{(l)}$  接近与1）。对于我们所训练的网络，注意到θ1中每一行都是一个401维的向量，代表每个隐藏层单元的参数。如果我们忽略偏置项，我们就能得到400维的向量，这个向量代表每个样本输入到每个隐层单元的像素的权重。因此可视化的一个方法是，reshape这个400维的向量为（20，20）的图像然后输出。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_hidden(theta):\n",
    "    t1, _ = deserialize(theta)\n",
    "    t1 = t1[:, 1:]\n",
    "    fig,ax_array = plt.subplots(5, 5, sharex=True, sharey=True, figsize=(6,6))\n",
    "    for r in range(5):\n",
    "        for c in range(5):\n",
    "            ax_array[r, c].matshow(t1[r * 5 + c].reshape(20, 20), cmap='gray_r')\n",
    "            plt.xticks([])\n",
    "            plt.yticks([])\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV8AAAFbCAYAAAByJI2XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO29eZBuVXX+v963LwbhIuSiCfNlnud5nmRGkCEqhohBU7GsTFpaJhU1xlSpicaMDkksE4kEAQFRFJR5nud5HgUHAmrAYKT7fX9/+HtWf0733n37nKa+51o+zz+96/R5z9l77bX32c9aa689GI/HYRiGYfy/xbDvChiGYfwqwpOvYRhGD/DkaxiG0QM8+RqGYfQAT76GYRg9wJOvYRhGD/DkaxiG0QM8+RqGYfQAT76GYRg9YFGbm1dZZZXxa1/72oiImJqamn7IounHTE5ORkTExMREXhsMBlkejUZZru2u02/5Dj6P14nhcPpbwmfreu13evazzz4bL7zwwqB4UwWLFy8eL1myZM7nUz5CTQ5sA6Fnl2Q983d8Hsvsh5Ls+X/hRz/6Ufz0pz9tLZPVV1991nvYZtWX9Z6PTEpto25QJstq78x7SijJ7/nnn28tk4iIlVZaabzaaqvNqnNJRmxzrR3L6uf5yLDW/pK8as+TzH/yk5/ESy+91EouK6+8co6fWnv0rpouETW5lX63rPmgVg8+h9dK89Vc46fV5Pva1742PvKRj0RExIsvvpjXpVB6WUTEKqusktdWXHHFLL/wwgtZfvnll6crgkll8eLFEfGLzhT4vP/93//NMoX56le/OsschL/2a7825+9WXXXViIj44Ac/GG2xZMmSeN/73hcREf/zP/+T19mBpQH30ksvFcsrrbRS8RmSqya1iIj//u//zvLKK6+cZSrBz372syxLDhER//d//xcRTeVhH0jpPvvZz0ZbrL766vFnf/ZnEdHsB7ZTdWF7VaeZv3vVq16VZfab2qb+i5iWU0T9Q8VBucIKK2RZcqsNcvXHP/zDP0QXrLbaavGud70rIpr6zHEgHWV/1j4u/B2vq938P59X+2gTP//5z2fdw2vst+eeey4iIr785S8XnzUXlixZEu9973tn1Yt6q7qzPdQl9hfbWdKbn/70p3mNZT7jNa95TZZZJz5b/cR3cG779V//9YiI+Md//MeoodXkOxgM8mWsIAX1m7/5mxHRFA4bwAHGivN5ApWOA4mDjQOJ9/M9GlSsU21l3hbj8bjRPkFf84jyB4mKzLZRDpxI1JmU9W/8xm9k+fnnn88yJ1kxlYimsgmcqFlnKVdX2UiZWd/S5E6F5bvYBn6E+QxNnBw41CneywUAZUyZaHDzefzdQmUyGAzyt1wIsA/UJtaLE90PfvCDLHPRw3p+//vfj4jpRUxEvR90b0Tzw/7jH/84y2uvvXZE1BcXa665ZqPubTAajRoLuVIdNW75fuoq68qPCce7xhtlwvFYWwWzH7i402Re0z3Je67cObb5GoZh9ABPvoZhGD2gldkhYnq5zSU2bTFa3pMq0gSwxhprZLnmiNPyvkZz+GxSL1IK0jrVj3STNE1UpQudHA6HaQuiKaFkcyYtY135O5oaSKGeeeaZiGjKgZRo/fXXzzIpJttUal+J3kVM9+9CKHZEs50lsxDrKtvhzHtJMal3QskuGxHx8MMPZ1nUOKIpt5Jpi8+j7r4SUJ+y3aX3sV7f/e53s0yq/PjjjxffIRMVzXM071A3OX5I/ynzZ599dtY7OH7UlpoTbC4MBoMcF6xXyRTBtt95551ZXmeddbJMmVCGMr/RT0Ld51ijHtLUwN9qTJf8GCzPNX688jUMw+gBnnwNwzB6QCuzw9TUVNIXekZJp7V8J+UhrSYN5fKe9EdL+Ro1f+qpp7L8wAMPZJnef/5Wz2Y9SUlk3qh5POfCaDRKGss2M/pA9IY05+mnn84yKRypC2mczBFsQy3saIMNNijWQ17riIhNNtlk1vPuu+++LFPebTEYDLKtpO2kYHo+dYDvrNHhkpmJfS3zTETTzERTFaliySzC6IJlxY22wWg0SnMY28HnSrcpF5rfaE5bb731ZtU9YjqCgfosU0RExLrrrpvlmj7x+iOPPBIRTZMPZSj97SKf0WiUz+L7aWKQWeOee+7Ja+wXmgPYd+xbtZkmJ8r4e9/7XpY5HjfeeONivR999NGIaJpzOCeqHnOZYrzyNQzD6AGtVr7j8Ti/pvwa03mwdOnSiGh+dbhSveuuu7LMlQm/0ipzpfbkk09mmQZ23nPvvfdm+frrr8/y1ltvHRERm222WV5jvKS+6F3Os2PscyneN2J6FcFVIL+olOXrXve6LPPrr/u58nnssceyTOcSV4pkA1wt6NmsB1fP999/f7Et88FoNMq2lna1RUyvnMgA2K+MP6VMpF8R005GrmB47+GHH55lrtq4SYIrYuksGUopNrnruYfD4TBXRDUHmFawZEBc1ZIdcJXPespBxjFFh+OGG26YZeoKxxhXiBpjdLxxfEt/uzjcRqNRzh+1Xazqc8qM+sG2s22vf/3rsyw9u/TSS4ttoG6WNktERKy11lpZln5z3BEaX2zTTHjlaxiG0QM8+RqGYfSA1nG+ogOkJaXtvqWteBF1OrXjjjvOegfjG2nM33///bN83XXXZZkOCNIIxeHSME+IQnSlk6pbLUZXFInOAN679957Z5nxuk888USWb7311ohomh1I03/4wx9medNNN83yG97whixfffXVWVafkMZym6YoZs2UMhdoiqGe0LwiRyBpL80H7Ktdd901y1tssUWWJROaDnbaaacs04xC2VMmV1xxRZbVJ6Sx1F1R0IVsuZa8qR+l/BYcU7UcDrfddluWKdu99tqr8TeiOdYo85133jnLF154YZZpdjr22GMjommi4rvZvrZYYYUVMiUB6T7nCeklzZd0JNM5SFmdcsopWZaJjnKlHOSAjojYdttts0xTIR2Vt99+e0Q0TZ0cu9zPUINXvoZhGD3Ak69hGEYPaB3tUMqhSsiDWEv/Rnq8ww47ZJlUWTTypptuymuMVCDdpgeSKd8YcyeqR0856YIoW9doB9FU/r5Ep9kGUk1S/2984xtZJrVT20gTt9lmmyz/0z/9U5ZPP/30LJOml7Yd02tcyh620Kxm/D0jL2RaIg0kVSOtFC2NaG4rFU2lHpGWf/vb3y5ep0ec8baqM81XNA8t1Dw1HA7THEdZlyJcGMlAkxzHz/bbb59lxmirffTmsx9uvvnmLDPCgWOQ5ha9k7pHk5hMYbX0lHOBeweYgY/9r+ffcssteY2xuG9/+9uzTJPRgw8+mGW9g+1V2tOIiLe85S1ZpsmL75SpIWJaJzkXcczPZ++AV76GYRg9wJOvYRhGD2hldli0aFF6fGtJsLVx4qqrrsprXK5z6+tGG22UZdKpa6+9NiLqGYPOO++8LHMjwuWXX55lUiRtHaxt2eSz22JycrIYRUFaKc8/6SxpG+tNc8RRRx2VZVF2mnu4UaQWVUD5cAulzBhsO+unaIcuZofxeFw8ZYL11ftJb+lh5+YL9iXNB0ceeWRENHWRv+PGCkbfUA/owZYJgr9jlix51btsJhAkT9JmmugkL5qUttpqqyxzOz3NVTQfHXzwwRHRbAdNAjTjcDMSNz3R7KGttPwdx6vMAmzHfMEIENJ29kvpFBeajmiiIM1nP6mORx99dF5jfWm2YUQRTZncZCJZsG8kp4jpvnEydcMwjOUMnnwNwzB6QCuzA/fsk9Jw/7MoOE0KDFQmDSVI7w444ICIaFIBmiBIP5jpqBZVoaxMtcB2BVV3OYNq0aJFmXi6RgPlEZU5JaIZpUEvLzcAkHp+/etfj4iI888/P68x6Jw5LkjT6d0lVROdopxeqUxVjIqhTEjzFG3CpN2keNQT0kBuSNFvqTssU09ICXmd0QxqM99NM490potXP+IXJhNRZMqV40cRCsxLcOqpp2aZZhVGjzB3w2mnnRYRTb3SmIpoRjWwTP2/7LLLsiw9pE7TXEW9aQtGC/H9jHyRXtBkoDEd0TQp0ZxHfdMGEZolWG/maKBcqW+cx2T+ocmRJr75wCtfwzCMHuDJ1zAMowe0jnaQR5ieSdKw73znOxHR9JaSItCDTy/1IYcckmVRVtGniKYZg3S8dqYVqYPqRHpXMlF0yWMwNTWVsiBt4v7wUuA8cxBQfsyvwM0Skgm95Gw7KSHLfPY3v/nNLIvWMiqFGzJKx6i3gTzNDHpn2xQNUoo2iKhHA1x00UVZVqpQ5qxgmXWnWYb0kbok0wTfxz5VP7/S0Q40feyyyy4R0Qzuv/HGG7PMdtA8wg1Jn//85yOiadL5whe+kGWOwRNOOCHLzKWiekRMR8nQhMXIGJlx2NdtINMO+4smE5lUaCKjXtfOhaRpUXlAOAYpH44N5rAopbbks7kRiu+bj4nKK1/DMIwe0OpT9fLLL+eqil9dxphqZcI4V8Z3cnXDVccdd9yRZcVhHnjggXmNqxWumLkSoHOEW2m1yuQqhl/Ihazy6DBg/Ci/xlrx0fnELyK/tNttt12W6UzUVlmuavk+tofbmJk8ms/ed999I6K5nZkOPMVjdz3RWU4Q/p6OLjlsufoguIo644wzssyVrbJIcYsnVypcXXKlxnjWUiJzypUMSb/r6nCbmJhItkJHTckxWDt6iw4lxvzSOS3QKcb4esqFz6Mzl2NF7WY2Qf5O8urCHMfjcY5t9hH7X2OZTlOOAx4qwFhkzjXaik1ZMr6eDkaCzl7OO3on61Q6psvJ1A3DMJYzePI1DMPoAa0t5KJcpGZ0bh166KGz/q8Y1YjmMp6J0Em9RTlIm7hltkbvd9tttyzLwB4Rxe2LpHqKI+xKJ2WuIJ3lu+TIIg1iG+iIogmHDg6Zcfh/mgmOOeaY4vO4ZZfyVJwtTS1bbrllltlPbcETnRkPzrKoL+k1TRR0gFxzzTVZPuigg7J8ySWXRETTkcpYYca2km7ShEXKKtrMZ1BmXZ2PfL76ndSf9f/Wt74VEc1MZnR+qc0RTVMCx4FMgtQJJvpmbC+3/lNn2W7VmSYimmOk110dbiW50iwjXaQphDpOhyTB+u6+++6z7uX4oUlh8803L95DGcu5L6dvRDPeWPHYc2259srXMAyjB3jyNQzD6AGteALP5iI1Y+ycts0yJo5L+rPOOivLpNCMPRRNZ8JzenMZ70cqT+8v44JF6/g7xufpiPEuZofhcJiUlu9ntqO77rorIpqezxNPPDHLjK9kZAiTbKs9jJk+/vjjs0yTC73/TLJ+wQUXZFlxlPQwU5bss7YYDAZJW0vRAhERe+yxR0Q0k6Ozf1gvnq9FmYgmi1JGNPWyFuFAfaW8RSvZH5QDzWsLBc0O3PYtHSHdpQefESus5yc+8YksS/docqI3n7Sa3vpaZIvewwgnmkrU110iY6grNCswWklmCZpLaIZkXdi3lKHMFHwGIyZ+93d/N8s0L2jsRjR1SM+mLGnKVGy0ox0MwzCWM3jyNQzD6AGtzA4TExO5bY5ePG4RFR2g56/kGY1o0phzzjknyzJdkE7y+PAbbrghy/RWM1MYzR6iHIyAIFWR+aPrtlHRIgZZs166zsxTpGg0r9B0we2K8q5y2zJlybrTm09PMiNK5Nln1AW3Z2szQBdTzHg8zs0OrCO94coixUTYF198cZb33HPPLFPXGNy/zz77RETTvEBdpImG5gqaOrghRRElpL+kjWpT16gHHpPOLcVskzbWnHvuuXmN5g7SZspFUUYR05EN1B+aK2hqoVmFVF+y5XM4Xqm/ikboMn6Gw2GaHah/7BeZ3BiNwfFL8wvNjYze0ZzBKIq99toryzRjcIMY5UYzhvSMpgbKVfKZyxTjla9hGEYP8ORrGIbRA1pHO5QSjjPQWHSbtJsB7oxq4HV6Y//oj/4oIpo0mV5sZgTj70gtuUlAZgVmSqK3eSHB85OTk+mlr51Xpo0EfCfPzjr77LOzTGrFvfIyD9AzTprHyBHKiqYOemvVZpoFaB6S2aiLbHguF/uB8hclZDC/8k1ENL3wpOWl9pCCsj06yyxievNCRDMKgO0rJfUmFVd/dNWXycnJPAeM9WT91SbqOKNAmLuCZZpplMeAdJzvo3mMz6CXn5tfVD9u6mBUgeTVJdqBBzTQxEXzgMwrzD3B8wipE9xYwY0lMq+w3mwjTTusxxVXXFGst8xGtWgGyXUuU4xXvoZhGD3Ak69hGEYPaJ1SUnS65ImPmKaRpNhc/nPZT1pE6iWPP6MdGBHADRJ8Nj2dDI4Wlef/6XlfSDJommJIUUn9RaF49DTp3lvf+tYsk/IwzaZoI72yNEuQNpHKE7wumdBbW6JeXQPnJROaUagzaj9NRfQ+sy40VzCiRXWnuYQ6xXczMoC6yXsYISOUoh26YtGiRRntQMrLKBxtYqKZgOOLESGUxUknnZRlvYN5IGjSYUQIN3AwhSn7RZtceH4cdV2mpS7yYfpRPpPPUmQM5w6afkjtWeZhAzvssENENPWdkT6MjOE8wegS9oNMojRRMUpC48dHxxuGYSxn8ORrGIbRA1qf4SY6SG8k6YI8lwxOZipB0q2HHnooy6SCoqekQfTmM3iatIkpGBnErqgKUk9SVbWlayZ+/a7UBr6LNIcy4UYDRo4wGkTUjNSPqRZJefgebrjg8yQf0jvWg7RzIeA72feikqT13JizrHwOEdObK+i9p2mHNJVyUDRARDnag/XkBg7peRdTTETzJBhSYuqivPg1Cr/zzjtnuZYCVGY7blTg/zkOGJXEOvEe6RzHF6MKJNu58hjUQBMV00SyLFMS38n60URFfWN0j8yAtUgWbjahmYtRFZxr9ByaFVgn1dW5HQzDMJYztPYwaZXHrxBjWvXFZswgjdwEY3751VW8LJ1WdETxa0QnEr+WNLzrq8ZVDn+nVWoXh9vExER+YflV5SpO7Wf9eFIw60JHIQ38+kqzDfzic1VC5yXjgrmy1SqdX24+W469rk4mPbd0RlrE9Aq1duYWmQNXoryuZ3PbJ1e+NQZAXWL7dQ91kf/Xirdr0n0+j45T9qPeTR2ng4x6zZUWnyd2QH2j3GqrYJ6AzPGre6hXXDWKxXVhBGQDXKmW4ozJtlnmWCNLokNSY5NjjeOdusf+pf6yfdJlMnI+T/1sh5thGMZyBk++hmEYPaA1zy5Rc1JTmSPo8KIziDS45qASXeI1brEkPeF1UhU6tEoxp6Rvut6FYo9Go6RxpKukfGonKTZNAARNF6Q8MsGQXpI+UpakVnxG6Tw1XmOdhS5baelEob6Q4uq93DrM5NaUFU0GpLuqb8l0ENGUA+VDmZRkWKPrXbPelUBTHHVB1JYOazoOae6jPnMcyExBXeHYoJzpoKJzkc8TladjkDJfiNlhOBymblO+1EtBsboRTbMIQfMbx7OcaDRFsW+pV3RC8hnUIZkdqNMs63k2OxiGYSxn8ORrGIbRA1qZHZjBi95BLsdL2axIR+iZJBUiRBdryZPpjSQVIkXgO3UPaU2JQnQ9w41RGQJjBSUzUhB65UnNSYsIyYrtIjUnapmvSDFFSWttVv27HgeuepLOUf6qF00DNE+RwrGOjJgonf1VM7NQbux7eqt1nb+jGUNY6BHyM+vAuinygbLgvbVE+TTFiXozyx7lRh2jbFkP/lZ6w3dTr0rja76g2a5mOiuBMc5sA004nINkuuG4ZMREaWxENM08fI/uofmIuq62OJm6YRjGcgZPvoZhGD1g0IZCDQaDZyPiiWXe+MuLpePxuNW+WstkNiyTMiyX2fhVlkmrydcwDMN4ZWCzg2EYRg/w5GsYhtEDPPkahmH0AE++hmEYPcCTr2EYRg/w5GsYhtEDPPkahmH0AE++hmEYPcCTr2EYRg/w5GsYhtEDWuULfPWrXz0uHRbJ9H8l8F6CKeiYrq30vFLm/JnPqKWU1LNrKe94qOFLL73UKh3/iiuuONYJFnxnKZUcr7E9tXqX6ris/0c00wfy2aVjrJdVpxdffDF+9rOftZLJq1/96rFSEjLFI58vnaidHlJrD/VEaTapD9SdWjrM2qGeul46KJHooicRESuvvPJYqVhruqh3lw7unPm7ZfU5r9WewXJNb5aValXP6CKXlVZaKXWFdSylRa2lDq1dL/XdfNJezucAzdI7Srr8wgsvVGXSavJ9zWteE295y1siImLttdfO66XTi6kYa665ZrGyzKXKnLhPP/30rHs5qPhu5vPVKcURzYGn3KC1/MHKU/qVr3yl+P+5sMoqq8Txxx8fEU0lKA18diqVgPlDlzXRlBQqoqkkzH3M45yY81X9w7yplI9k+Y1vfKP4vrmw6qqrxkknnRQRzeNoqJzKW8u2E5QPc60yH7Ty1i7r+JuZz+M9zNeq/K7sO+a1lcxOP/30Yp2XhdVWWy3e/e53R0Q9z7H6l/3J+rCPOCZYTx2DRLlRN/kM5sxmjm7qjRYXtYlLY/C0004r/n8urLrqqvHOd74zIsr5ciOmdZGnPDMXL48UYq5i6rsmzlo+ZLaNxwvxPZShfsuxVjqG66yzzpp1TWg1+U5MTDQ6SCit3DhBsrOZRJzJwJn4WIpE5WKiZSaa5gTOI7b5Ht1TW+VpQHdJpj4YDHJwsHM4SWqg1SZWTihcxZXOpGMb+LGpKQEnIF7XgOI11kn9XJvs58JoNMoBycmtdN4VB0Pt/DVOVJws1N/f/e5381ptwmWZExUHufqRz6Ce6OwzToxtMDk52RjMAvVGusD21xKEs02l5OPsz5oMObFTFqXzCDkpUQaa5Lvoyng8Tl3gmGWScs0TtQmSv6MsOS+pvuzPGnMgODb5fk3s7BvKez6HEdjmaxiG0QM8+RqGYfSA1gd0aalOusqltco8nppUgGcokVbzGaIcNCmwTNDefN1112WZZg/Zk/kMUk/Rni65jXkGFWkJaZ5oGaka76XNimYFykdl0ni2nb+jCaLmuBElq9mKS21qAz2f1I86I5pccwrNhx7ecccdEdGky4888kiWaaraYostskzqThvhOuusExF1Z85Cz7WbmJhIukqTEamtzDWsI++lHffRRx/N8k033ZTl3XfffdZzqY+0hbLMMUszhkxelAt9NAvRleFwmM9fa6218vr3vve9LMumz/ezbTRDsg40R8mMQh2nv4i/o22ZOvTEE9M53yVPjkfKr2TmmAmvfA3DMHqAJ1/DMIwe0Jo/yaNHikgvtpb1DFUh5SGd2WWXXbJM76XoFD3DXL7zOqksvZ6sn95Jes86i350MTtMTEwkFWTb+Hx5l9nGDTbYIMukUCw/+OCDWRaNIe3ee++9s0yTCt/90EMPFa+L6rHOlJmo9VxHX9cwGo0ycoH0lJEy6jfSvQceeCDLNBMwCoLP23fffWc948ILLyw+j8+gJ530/uGHH46IZrQDab70pGu0w2AwSBrLiAOWZebgexV6yTpENCnx0qVLsywdqkW9UF4M01t//fWz/NRTTzXqHdE0f1DfupphIprRDrX4fbWD0UycA2jaqs0BCnel2ZPvYzgsIz1o+iuZv2rH3SsMcq49EF75GoZh9IBWn6zBYJCzO7+qNDor7o3Gaf5/4403zjKfwS+tVhb8otExwq/ujTfemGV+vRhzpy8Zv0yl1U/XL7h+x5g/Omr0deTqg19dMoP7778/y3feeWeWtRJ44xvfmNfocOOqnispruz4RVeduFKgfLTK6eJEGQwGKX+ulujkVPu5It1hhx1m1S+i6YjhinjHHXeMiKbDjU4PMgfew9UzGZrK1AOudhYS+xzxC1mqHhwTpc00fC+dRFxJcRVX2mjCMcNVLVeNfDblQmeV+pDtpn6XnKfzxcsvv5z1pfOPK3/1B+vHuYE6zrL0I2Kaab7+9a/PaxwPX//617P8zDPPZFlO2IjmuNIcRQbL+qt/HedrGIaxnMGTr2EYRg9obXbQMpq0sGSI5pJ+r732yjKpAKkNzRSijqQ2e+yxR5YZ1yfD9sz7ScNlYqDxvLRFuYsjZTQa5e/ZZtJ1UT7SEpod2AbGKjMHgSgP6SPpOCk25c37r7/++ixLJnSCsf0Lodjj8biYpIY6I/pN3aHZZtttt83yNttsk2U52SKm6TBNT1deeWXxXpo3aP5gnaTbtW3bekbX2Gc6lyhrmkREV+lAo17RFEX9oClOVHjXXXfNazTJ8d10yNIhfPHFF2dZ7eYYLMmti3N2OBym2YJ9xLEihyNNZGw7UXKg6j0zr2233Xaz/h8R8fjjj2eZY4bOTtV5yy23zGs0Cal+c80pXvkahmH0AE++hmEYPaCV2WE0GiUlK6V8i5imN/So0oNPakMzACmHnkcKTlrwnve8J8ukzbfffnuWST9kjmBUASm7aChNAfMFqSRlQi+pZMH6Mdri7rvvLj67tJ2T1O7ee++d9Y6IJgVlO0k9b7755ohobsNmnUSxavl25wLNU/RQ08SgtpHWk2pfffXVWT7ooIOyzPtFCSmHgw8+OMvHHntslpkGkluQGYGy2267RUTTQ02TkKIhupodBoNB6iKfQR2W2YHjhH1OGdEkxMghbY+ld56RLMwmSDAummNl6623johmRAUjbaT3XXQlYrod1BWaFWRq2XPPPfMadfXb3/52lhlNtdVWW2V5s802i4im/tCMwa3a559/fpYZPXPUUUdlWeObZgz2o+aUucx2XvkahmH0AE++hmEYPaDzJgt6/hhZIApCWsJ7tfyf+TtSJNHwkvcwokmJSO9vvfXWLPP92m5J2ktvrWh6F9o0MTGR3mhSDLaHkRUCKRYjQBi1QHqoOlIOfC7pKE00tS2hMrGQerFOC0kwPxwOi6cf0LMu+ZMO05PPLbWk/qTGiohgu2iqom4cdthhWf7kJz+Z5VqGL4HZtUQru8hE0G9pJqDcpfOi+hFN8xw3TlBv2FaNq3vuuSevsZ9pfuJJC4w20Yk1rB91j2NabelqotK4qR0JpnYeffTRee2uu+7KMs2ajHiiaUKbczinfPWrX83yKaeckmWanZjhjHomXaWpYaeddsqyxuZcMvHK1zAMowd48jUMw+gBnZOp0xtLGiZvLa8xioC0oJavQZSLpgF6KZVEO3kHdQAAACAASURBVKJJLVimCULUgfv46eXvmqUqopnBi+YQZmzTZhJ6Ttm20gGkEU1Kc99990VEkxpz80EtexijPmiakOeaVJ992tVzrd+KirJPuJFGdWSUBvuVnupa20THKXe2lzrA66TdjAbZdNNNI6JJTRUVErEwU0zELyh2KZscdaEU7UCTAbPeccxQzsr+dcEFF+Q1mty4yYQbci655JIs02QhmbN/NtxwwywrD0NXE5XaRFNGaUxSV2heoomPMimdYcccMjTb0czDccpNFjR/yeRFXWI95gOvfA3DMHqAJ1/DMIwe0NrsUEoiTOpaWo7X9rGTTpKGKdrhwAMPzGs0XZAS8xmXX355lmmmEBREH9Gk76IzXfamM30if882K1XiGWecUaw3aTOpFc/lUptpOqDcSSWZZL1GUyUfyoFUV6aULjLh72qmJbVn++23z2tM5cf+YxJt1lee+k9/+tN5jRE0NDvUNi3QdCNTB6nmQhKFz8TU1FRSXXr2aTJQNNBjjz2W12655ZZZdYyI+Pu///ssn3rqqVk+9NBDI6IpW+oVzREExzQptMb85ptvnte4Kaqk//PF5ORk6gj7iFE66n+aQt7+9rdn+bzzzsvyueeem2WajGSiYlRIKXdKRHPM0HTBOU1mO5pKSufkzWWK8crXMAyjB7T6rE9OTqYxmk4AxqNqtXrVVVflNRq5GTfH7bb8oisTF1dNXPFw1fCJT3wiy4z3Y9Jt/ZZOMMYJysnRJYMXHW5c1XPlovbQucPVDuMXGd/KbF1f+cpXIqK+2uXzag4IxqxqhUW5cuWiZ3RxvC1atCgTfZMB7LzzzlmWQ46rD644mGz8nHPOyfL73ve+LMsxxhUbnSJcddDRy+vUE20VrWXKk951OW4qorntmitqxvxKHrwmZ2tEM86ZDmT2v9pH/eHKlytFjqX3vve9WSaDEAOjvpVWeV1YAk905u/5Ljn0mKWNGcmYCJ37CMh8xGZOOOGEvEb2uckmm2SZcwPfyXtUJ/YTnbqaS+ZiA175GoZh9ABPvoZhGD2gFU8YDoe5VCf14vZHmSUYK0c6zzjN3XffPcuk5HKucUlPQzkzEJGGkVox8bO2J5KG0EQgurvQDF6USWlbLxMvs210jLzpTW/K8t/8zd9kWSYVmhTooCBNo7mG1LS05ZtZvehQ0LO7xG5OTk7mu/hMOidkfqIThW0j7aUjlU5IZTAjtWOZJgM6bA844IAsU1ZKos2+YcyvqHbXrGbcis5nUC+l56TghxxySJZ5OjNNW6TE2iZMeZKOn3TSSVmmw5FONMpFceqMi6Wuq85d4uWnpqZyrNDJygxqGpd8/7/+679mmc76k08+udiGa6+9NiKacqXTjk5IOlz32WefLFMXpN+cR0qBAN5ebBiGsZzBk69hGEYPaGV2mJqaSipDWk0KddFFF0VEMzsXjwTn2VykLoyOEP0jlSYVpOmCHvLauVfyptYyfMlL2XVLrdpBOdAEom21tUTypDM015BKvuMd74iIpieWv6P5gHJjJjFSctF6ypLPE2XvErs5MTGR0Qr0ijMqRn3B6BdSY0Z9MD6bJhrRXG5bpq7R5ELzFM+1YzJs6Qy30ZLq6my0rrHPk5OTWSdGmVBvJTeODfYL687fUUbKrsWE9KTpRxxxRJZpEqzFE++///4R0YxOKmV762KOmZiYSH1lVjW2R8ny2RfUa5pfaCb4/d///SzLXEXzAqM+GHXDDHiMLqIJTm2laYvRE9LNuSJjvPI1DMPoAZ58DcMwekArs8OiRYvSI8nlNM8gE1Wml5vbEkkRaRr4rd/6rSzfdttts57LwHceD05qTgrFTSCi6rV3i0Z2pU2iXTRr8F3XXHNNRDQjNmgmIG0qJamOmI7wIAVlADhpot4X0fTysx+0CYIbFOTVjpimgF1MMePxOM0NzH5Fs4s23tQ2gXBjzpFHHpllJqzW9lG28bLLLsuyzAQRzaxVNGmQxqtMbzdNODIVdNmME/ELuYiO0iSivoho0lyBekX9oGypuzJdMTKElF4bBCKaETBvfOMbs8ysf4om4LZ1mr9ojugC0XlSeEY+qJ005dU2zdQOVJAuUA9ocmLkA8cYz/ujrkgHuCW+dPjBXBtPvPI1DMPoAZ58DcMwekDrM9y03GdgM+nPRhttFBER++23X14jDSZ1OPHEE4vvETWrJRlnMDijBui5J0TxmB2LHmuZULrQycnJyWwTg8xZF1FwUinSzosvvjjL3LNO046oJE0XDERndAlpNdtMU1DpuHpSJPVvF88+k6mT7pIeahMMPfI0LdFEQfpMmeh5NDtwcw03J5Ae8hh5trnkmWadpXcLOTpe8qTZiTLSs5nbgqDJgPrKY9VFpxlZRHkywoT6RCrPqBttJKCpjuaPhSSZn5qayrHAMUOTgMwu1HfKgeOO+V3YZo0rRohQfpxT2Dbew/arf9h31KX55LnwytcwDKMHePI1DMPoAZ3PcCNt4kYHLdNJYbgE535zUitSZR3jzIBoeiAZSF/yykY06bKCn0kR+H95tLueQaXnlxK0R0zTGEYvkDbRS8qcBkwJqN+yjfQ4M5KB7eDec0Y2aGMJ+44yXkhuhxVWWCFNHIxgoNdeesQoDab8pJmApiWaGGTGYXA7IwdIXc8///ws184KU11pVmDfSD5dU0qOx+N8NvuFlFf14SYCpovkuGLduUlA9Jj6SHnyeRtvvHHx2Yy6kDmI+lHKadBFLsPhMHWNuk2ToyKHmNOF5hLmheF16ooiMpjvgaY6phZl1I/MqBHNftLGD76DZdV/LhOVV76GYRg9wJOvYRhGD2htdhANpTeU1FR0+oYbbshr3ETAQG0+44orrsiyKBSpFKkS6QmD4Ll/nwH2ol+kVaX0eV2PkBftonmldA4U38loA+YroCzpuVUdGSVBGlgr09TBPAsyu7DNjCihrNqCOUDoWacJQn147LHH5jWaJVgmVSwdE8/NJtSTM888M8uUG/MGkCpKl0rpRiOmaXXX3A40UfEZfIdMIsxjQBMVdZ+RMTS3SM6UN9/B9vEe9n9JV0obOSKaY7ALJFeaJEtmQZomqeM8Rv7www/PMs2TMgNyUw9TvDLShmXKitEOGjc05XFjl0xic0VQeeVrGIbRA1qtfEejUX6d+LXjik+zP7+odD5xRcwvHb82WukwdpFOFa5u+IVkVix+pbVVlQ4IQk6VLmdQDQaDXI3wa0xoVcJVKB1rXNnxGWyb3kGnBtvIZ/BrXDP46yvO1Q7rpy97l5jW0WiUq1KuYLnKlsOiFhvNetFZREevHLa8l4nX6bRhvDOvl86+oxOKzjm1qWuc73g8TvbD1Sz7uaSjpZVxRLPPWZaDkg5mrpK52udWaq4KWSetwtlX1LGFgCyJ9SLURxyfZAbsQ7aB8eGaG+hk4xjkSr52UjpXweqn0onfEdPy8xluhmEYyxk8+RqGYfSA1tuLtSQnFSIt1DKb9ImG6lLmn4gmndRSnqYNxgQzY1gpdjWiSetE5UnZSIfVpi4ZvLiVlrS5RKFIm3gvTQlsD2N3FXtIAz7/X+qDiKaDhs8uxQ2zHgtJpj4YDIqZqkpUlbGbpI+klXSWkSbLlEAzAuNj6bxkLChB2ihaTXpdcjx1xaJFi7KNNC8xjln9wjFDWbC/SJXpcJOO8BkcD8xCxjFBeVFXNS74bpoBF7I9fzgc5lzCOYNjuZQhrLRVfWa9GK+r7GTsb54fyLmIz2BKAI7pUvw7n60+c5yvYRjGcgZPvoZhGD2gldmByaBJ9UhptHwnrWYUApfxpKSMkZOJgaYN0hA+m8t/UkTeQ9oqkCIpFrVLtMNwOEw6zd+TxpDaCaQwpHOkoKSVuocyY7toMqlFTNAbW8paVoo97bK9OGJavqTDjNuWSYkUj+2lLKlfO+64Y5YVRUNPP+VKMwrNWozq4P16D+VHuarOXZOp07PPPqee6zrNYszExbqx3Ywo0jPYNtJf0mPqE6OP+FvVj33CSAqhS5z8xMREmkfY/4xEkF6y32iiYnsIZlssZaSjWYZypc6zb9h+6TLNoTT9Ua9r8MrXMAyjB3jyNQzD6AGDNpmIBoPBsxHxxDJv/OXF0vF4/Lpl3zYNy2Q2LJMyLJfZ+FWWSavJ1zAMw3hlYLODYRhGD/DkaxiG0QM8+RqGYfQAT76GYRg9wJOvYRhGD/DkaxiG0QM8+RqGYfQAT76GYRg9wJOvYRhGD2iVxmuVVVYZM5vQXGD2oPnsomNGLWUV4u/4f2aaqiW4rv12Ljz//PPx4osvtsqYvdJKK41Lp7cy85VkUWsDsyix3qU28N75yKT27JJM2Gf63Y9+9KP46U9/2komixcvHivbU032ehffWZLZXPUunarL/89HBygfyZD14O+UtevHP/5xa5lERKy88spjZsEq1VPvrvVbLeE/7yll5+Pv2L5aBjxmOyvJhc+T/LvqSmlOqfVj6f2lxO8RZRnyufPRvdo9Jd0rjZ+55pRWk+/qq68eH/zgB2c1otTxTIlX62CilMKupjA8yI6CrympFKk2GCW0v/3bvy3WbS6suuqqcfLJJ896PidkpZRkG5hykinxKCumgFQbagcvUiY8MYIp8ZiuUnXhM1gnveef//mfoy2WLFkSH/jAByKi2T9UTsmEbWSKP6YQpUw4KejZvLeWnrOmJ5SndJbXSmkUP//5z0cXLFmyJN773vdGRFPurGfpYEbKjakca89QilT+jukYa2kQqZ9rr712lnUqA0+aoL5Jbz7zmc9EW3BOqU10pQ9OLb0k68W0jvpwsj+Z6pVt43WWqRfSQ6ax5fjRGPz0pz89q+5C69OL9bKS0kZMz/j86nBAUMAcSGykBMQJuTbhlo6BiSifJMzflT4eXY6JGQ6HWQfKgVA7OdHMZ0VKGUsZ2a7aESWUCXO0liYS5lfmRL0Q8JRe5hzmINGEyQ8F+5t9yeucoJVTle3ioOX7eA8HLgeP5MmJjEf4LOSUaz1f/cE+32ijjYr3ChzU7CPqAo9Jkuw4vjgRUUaciHk/5S+Zsx7U5XXWWSci6qcPzwWedE25Mx+3+oiTMOcU9ifBfirl9K5N2mwb72GfqR8pJ07g8zmSzDZfwzCMHuDJ1zAMowe0PkaodBIwKbSW7KSHvJeUh8t4Ltm1lOdzSaVJlUlbSQF0Wil/S+rFOon2zHXSaA1TU1NJWWr2U9EpUiXKh3SPVFJ0LiLie9/7XkQ0bX6U35prrpllypjP4Mm+khvNErRTi253OdF5MBhkmyhz0srSUTc8SoryYX/zuBy1reQ0i2geS0O5UtdodpCZh3rEY5Ck213TsA4Gg5Q7Zf3kk09mef3114+IZj+zTTwOiSYI2Xkjpk/tfeqpp/Ia5cxyzTTDI4pUF5rBaObQvV2OERoMBvle6iKh9lMnaBpgvdg2zg0yY3Be4BitHQH08MMPZ5myUl2pH9Ql6chcuuKVr2EYRg/w5GsYhtEDWrtttYwuUciIaYpA72EtBIumBFJlmQFIQ0i9WGaYEa+XwqZIzR577LFZ7+4S7TAxMZE0tuah13V6zumhJT3adtttsywKyntkfohoRleQhm288cbF66yf2swTXknp1aauJ/XKFFALmVJ76IVmXWve5z322CPL+i1pO2VJc4SoeETTHEFzjagpn0EdlJ53MU9FNE/qJa2n2UnUlScWU284fqjj11xzTZZlYiF9ppmAes7+vfnmm4t1kh7ydzSLqNzF7DAajbIdjLxg/6uO7EP2LccJT7em3tDcINAUxfI999yTZZp2KBON39rpxjJRzDV+vPI1DMPoAa1XvvricEbnV0irAn4ZueLkKplfDa5A5Hi55ZZb8lotno7OmCeemD6Hr7SJgU42xWzyfV1WvoxTZF24ouMqR6ChftNNN83ydtttl2Wu6rUC44r56aefzjKdDjvvvHOW2Tf33XdflsVcKHeuqrjyaIupqamsJ+vFVbBW7bXVB/Xk2GOPzfImm2yS5a997WsREXH++efnNTIH9ucDDzyQZbaNDiytbLjCYQyu+mAhcb7SQa5KKXe1m5scONaoS2zT3/3d32VZ+rT99tvnNToz2SY6lDh+KDutwikX6rfq34UlDQaD/B3nDOqNnGFkLIwD5or5jjvuyDKZsJ69xhpr5DWOJY4TyoRy2HLLLbMsmdScxBpfdrgZhmEsZ/DkaxiG0QNa8yeZFUhB6ICQiYExcXQMkU7W9orLOC5aGRFx9913Z/lP/uRPis/Yb7/9sswYRzlkagk4usZtRvyCaol20azBdsr5xmt0gND8QlMC23bIIYdERMR1112X1xi3u+eee2b5jDPOyPIf/MEfFOstB80xxxxTfJ9oWlfZ6Hc0NZTMKDfddFNeo3mKTkPqGk1Ropg0MX3961/PMilmzYlG3ZW55gc/+EFeI6WVHnVxLEX8Qv9kbqIziOaDLbbYYla97rrrrizTREVH04c+9KEsq/61rcPrrbdelhmbyv4nfdfYoymE94q+d4kJ5/ghSPdlIqRZj+anddddN8v3339/ltnOrbfeOiKafUunJuerz33uc1lmP9GkJVPY5ptvntdoilGfziUTr3wNwzB6gCdfwzCMHtDK7DAxMZFeRtJRUhfFJNKLziU941+5TCcdkCf48MMPz2v0fp511llZJg1jmTRTFIl0kxRXtIkez/liamoq20GqRBODZEIPLaMdaCJ59NFHs0zqLY8vPdX0fDMGknGvjHA46qijsixvLOVAs8x8vLU1cHsxY4f5fHnWaUbYddddsywzS0SZzkVM61It7lYUPqLZzjvvvDPLjHqR+YImMPapIiNI4duAW9FpKuH4UD8y/prtp7xIvakrouGU4RVXXJFlmrn4DI7NkmmCcqZ+a6x1kcvU1FRDFrwuSD7URe4zoFlzs802yzKjLzQH0JxCkwKjT6g3rAffqfHIeYb1kyzmiqDyytcwDKMHePI1DMPoAa2TqZeSQXM5LgrP4GPSOHkdZ5ZJAURVN9hgg7zGAGvSlNqWYpoQ9FsGQZOGdt1CG/ELWiEKRjpHM4AiGw477LC8xkgOeuXf+ta3ZplB56TKAilPLfP/aaedlmVGHsiMQ7pVe15bMME8ZUI9EFXkppLjjz8+y/wdzVo013zpS1+KiKY5iVEk9ILTJEXzB8vnnXdeRDRNXDvttFOWF5K9K6Lp2acsaHLTO+jZZ9A/t77SXPGe97wny9oMUDtcgO9j1jtuuaeJQe9nVAJ1RTLsaqKSrtG8wsgYvYuZx7jNnvPI0UcfneXHH388yzp9hGONZq7alnP20/XXX59lbWApmUf4bpsdDMMwljN48jUMw+gBnZOpk5bSZKDA7tr++De84Q1ZpmmCUHQA6Sa95tyzvvfee2eZtJq06KKLLoqIJj2tnWLaBXoW60sKIurK7FSkNszExE0C9GArwPvss8/Oa9ybzigJUnZmcyL1PvTQQyOiKRP2mTzfXSJAmCC7dGhmxHT799prr7xG+TEKgfSZm20uv/zyiGhS6je96U3FOjEChN5x0ltRReor9Wg+Huy5MDk5mZSf9Jdy14aKr371q3mNes26ffzjH88yN1zI1MRNAaTslDPLNEewr0rJzEnBFZnRNauZ3sU+1/l8umfm85m/ZPfddy8+m2NC4NxB8xI3N9H8wb5mNIg2NXHuo8zmA698DcMweoAnX8MwjB7QyuxAz37tuHPRGNIgegy5B53BzKWgc1Is0gyaPPiM22+/vfg80VJ6JlmnUhD5fFHz1tKLLOrP/9MTL/oc0fRyM3G4TBZMgchA/FoaPFK5k08+OcvqR8qS5gpRrK5pNhUBQ9MIIytEcbfaaqu8duSRR2aZsmJuA5qfZLKgDlA+NP3QzMN7SDdLR5CXjrbvanaImDbj0NxBvTvwwAMjIuLaa6/NazRXcfMDN+1ccsklWdZGDCZHZx4QyoWRAqTNp556apZ32223iGhGNdFkqAiTLuNnPB6nOYERB9RnjVXmqmDkBfuQ/UVznjZZUO7MT3HAAQdkmePgO9/5TpaPOOKILCsSifNI6Wh7RzsYhmEsZ2i18h0Oh8UTXunwkAOHXxh+Sbjio7OMjh09e4cddshrzFZEQzlXNKeffnqW+XU/+OCDI6L5ZWedtCLrGtsqFkCDPFcaWjFQToxX5SqPqxmuLtTm2qm2J510UpbpXGGduEJUHDJXgaUTpLvGbsrhxpU826/txXR+Uae4IqPjkatnORCpU1yxUX/otGIMNmNBxZZYT67mxGYo0zaYmJhIeXAFT6h9zND3qU99KsvUYcbl8vq///u/R0TERz7ykbz2jne8I8t05jHOev/9988yZaSVL3WPjjrF3FJu88VwOMyxSMcjHaRa7VM/6EzjNvszzzwzy8zo9+Y3vzkiIj72sY/lNa7kuc2aTJTMjKxD7IJx4G0PIPDK1zAMowd48jUMw+gBrcwOPJuLdJVmgKuuuioimjGBjO2loZwOIxrN5aCiGYDZiEiPFcMb0aTv22yzTZZFW0lPSBFU7pIMejAYJA2lY4SGdplUSJlJYUh5TjnllFn1jpimNzQdUH5s79VXX51lnmrLs85EfxlvytjK+TgMamD2LlJFOkxkdiH9Jg38whe+kGU6b7ktXOYVxjLTBMHE8zRrPfjgg1kubVWnc5fmI1HhtvGchORB/aNc9G5ue/7zP//zLHNLbO30b1FrOmy5Lfmggw7KMuk79Yn3yIlFvWKdZd658soroy2YAY8x54xRFvWnCYugs5HmRo6xG2+8sfGsiObZgDLVRDRNgtyuzthmmUx5rhtNo5qLfIabYRjGcgZPvoZhGD2gdZxv6XhtRhyIjtAEQPpHikivIs9CUlwnPZ6MAmBGI3qjuXWQdFblUoL1iIV59kejUVJX0mbKRCYYUjV62Um32AZm+VIMJKkkqTS9vN/85jezTG826yeKSPmRsmnbZBeZDIfDlHUt6bWiYUi/mbmN9aJnne1RO2lqeP/7359lxmgyuuWGG27IMum6+od9QJoqs0yXLdczQQpNfb733nsjomkuot5Qnjz/jrpy3HHHRUTTs0/TDZ9Bs0ttq6z6krJg7LVMV1236UvHSu+MmI6yKG15jmjqLc0lnGsUV07z3Fe+8pUsU/cob0Z40ASn+tFsw36cj7nOK1/DMIwe4MnXMAyjB7TeZCEveC1DmKgJPYMKqI9oUh7SSXpSlUSdnn1SDmZfIp0qZVqKmPaK0xRACvxK0MiIJv3hJhNdJ0VhZARNOPTy0nxQOlONXl5m++LmFcqNFF/9RDrOexeyhZaoJWhX4D77hDpVO0eNXnttL2akDDfaKPNURMRll12WZUYMUJdEm6mvNE+pLQvRF8mAukLqL+pKesytxgzq33fffbNM056oMscGN4bUzF88S5DHxIviUxY0QSgChREa88V4PE7dZr2oizIb8vy+t73tbbPqF9GMOGD7NR4vvvjivMYy28bz6RjBwQgvjTduiWb7NaYd7WAYhrGcwZOvYRhGD2jNE7S0pmeUdFF0ihST3mhuyKCpgUt6UVLSO0ZPMPCZURA8843B/fIsk07Q5LEQDIfDpCz0dnKfuygUTS7cLED50HxA6q2NGKTP9C4zDwTpG99DE4D6iZm8SJsWaooR3aKc2VfqE2aiYyY4toGZ2bjxRM/Qxp6IiC9/+ctZJk2ljlKXuOmnRK8pV/XjQrz6kgc33NDsJB2h2Ypjo7bx6Iwzzsiy8nwon0HE9CaDiOb5gTTVUf40O0heF154YV5j7g2ZTbrKRWYlzilspzaT0JzGaCbqbSnPTMR0xBFNWNxgRJMLzTkcM3y2dLl2gILutdnBMAxjOYMnX8MwjB7Q+uh4UWHSUqYwFI0jbSRF4NL90ksvzTL3U+sZpONcvvN99BSTqpC2iSIwsJ0eUnos22I8Hidd4vtJ4fR+0jJSRtIppvJjykBRU1IlJpwm/eHmgkMOOSTLpNgyy7DOLCsapGuCbMmXMieFU4QCve2M9GAEA01IpOiSIdvONnIzBb39pPHUA11nnanHbVMGzgXSXOq+zABsBzd9HH744VmmGY1mANFwypDjlbJg/gPmKWC/q8zoAY67heQBYUrJWkpXmRkZYcGcLhxrHEs04clkxCiK2ljjWYc0c/H9yvnBZ7Q9F9IrX8MwjB7gydcwDKMHtM7tIIpAM0DJM85lN2kj8zUw8oFUSN5YBpqTCpL+kSIwPwS9+DJBkCKQ1i306HjJgu1ke/R+eu1PPPHEWb+PaMqEdZSJhhEdNMswCoLy4TlWPBNPphvWmTR2oceki87T48yNLWonaf8555yTZXqw2a80MYi6c/89owiY1pR6QrMDN5koyoHvoIlrodEOk5OTWVfWje+TWYG0nqk+aSKjbBmVoc08lAVNG2wzxwQjY7gJSGYzRoEQ0pGu5/2xrQJNVGozTU58F/WWfcPoI5kg2J+UGX/H1LOM+ijlwWAETynyYa6NJ175GoZh9IDWK18Zxfll5JdHqxFuDeYKjgZsGvjpPNL2Tjo7+FXhF5CxgfxicTWuMleY/N1CwMTh/Apy5S35MA6QK5/aFlx+NbVdms9ge4466qgs8x4+jytEXa/FMS70DDf1EXWD79fzmaWMjkLqD1dwXLVJP9hGvo/9wXZyFczYa61syRzYfr17ITHQWmFx5cYVmPqc+sNVGWPja/HuWsFyjDKelytCyp8Mg4xI8uWqkSxOY6krI5A8qX8c43Ic0llWkw+zrXGMq83UFeoB9YZjk/ez/dIFMjeyVq2S5zqgwStfwzCMHuDJ1zAMowe0PsNNVIb0j9s1dZ1LfjqfGE/HmFXG5eo66R+dC6QIpEekIqQAJYrN9y3EuTQxMZFmFVJYykfPZ7Ysto20mm0g5CwjJWKyaDpUSNkoH9I21Y91fqWyuzHOt3ZWmSgm+4nOQcaf0mxFPRDtpoliPtul6WQiXVc8Op27NAlI9l1MRMtU2wAAIABJREFUMRFNc0wpA1bEdFupE4wJZv8z7pSOWGVqo+zZ95tttlmWKRfWif0iPWOcL3VZ/dBl/NCUSfMB6y4zCscsnc3UcZY5JjRn0FxCs0wtVpx1YvtUP/YdHXKc82rwytcwDKMHePI1DMPoAZ3PcKNZobT9kzTntttum/X/mb8j5dGzeY0UguYD0lBSKHopZRYhnWTMqajFQr21fD+pqagwqRTpMX/HOixdunRWfdkuxiCSptKUQJrKNpe2WzJKQnLtGu2gerIP+Sy9l7SfR7bTtEQ6R+on00bt7C/eyy3ulBWprJ5HUwOfofd0NTuMRqPU7doZZHo3j4WnjKgf3JrNdusd1ANlxYtoRjsQNfOXnsNoFdZJ1zme54vRaJTP55xCvZHc2VccM6w39YbjTXKjqYH9SHmzHXw2dah0jD3nNpkdalumI7zyNQzD6AWefA3DMHrAoA2FGgwGz0bEE8u88ZcXS8fj8euWfds0LJPZsEzKsFxm41dZJq0mX8MwDOOVgc0OhmEYPcCTr2EYRg/w5GsYhtEDPPkahmH0AE++hmEYPcCTr2EYRg/w5GsYhtEDPPkahmH0AE++hmEYPcCTr2EYRg9olVJylVVWGSv9XS39YumAwFo2eKKUeq12Lw/aq93DbdOle0qpDp977rl48cUXW6Xjp0xqW7X1fv6/lkaSKN1TSqkYUU9dx2fzeaX0f6VDR5977rl44YUXWslkxRVXHOskhFqbS+C9bE8tVWHpYFT+jtcph2XViXIt6ckLL7wQP/vZz1of27B48eKxTvNgHUr1r42fWluXlQ51WX0/83ml99f6byHjhzLhO0tjtqbLyxrrEdN9uqx3zHxPTcb67bLq9Pzzz1dl0mryXX311ePDH/5wRDRza7IRus7clsy3SmWmkjM/qBrMZxA6zZT3zqxHSYAUDnOoShk/9rGPFd83F1ZfffX4i7/4i4hofhT4fuX2ZL5S5gllvlq2p3TsEa/x+Cbm7aWM+WzmLGVuUoG5UHVvF5ksXrw4jjzyyIho9jHbLOVkn3FSeM1rXpNlHYtTes9cv+O7KQceGcM6Ccx7zDzS6t9zzjmnWJ9lYcmSJfH+978/Ipr6Qb3QETbUfY61Wls5xkqTJfu2dvIvj88p5cWljvF3kvPHP/7xaIslS5bEBz7wgYhoHr1TWkywD3lMFydfyo11VB5fvoPjpDSHRTSPU6KMS3nNSyeBf+pTn5rVjnx/9T8FjMfjfBmVgI3UoGUDdAZTRHl1FdE89l0TI5M38/wvCoTJ1FkPKo8SH7ND+bv5HPNcw9TUVGMSFNg2DXYqBhN21yYoPlfPowJysPDZpSTSEc02S1GojJyUJL8u53INh8PGQBWY3Fv6U9MTThAcaITqyDZwon7d66aTSbHvOaGyzaofdY1YaBIqJlNnm0oTcW1RwSTe/B3L0gVOBmwnJ4w111wzy+wLPk+TPPuECw1+BNpiPB6n3EvnHkZM9wuvUZcpE447tlN15IeV7+PzOB5Lz+D9nIs4mUsn52J7tvkahmH0AE++hmEYPaCV2SFimgKRCpGOaSlPelyzyfD4aVLE0hHeNEGQkpHe8jqPiH700Udn1ZmUvXQG23wxGAySYrCdpCiiaGussUZeoxyefPLJLJPm0OwgubK9fB9t5qSYtO2yTmor68R6yAzU5VyuwWCQFOyHP/xhsY56Lik+zxYjhSMlLNkCeS/fQZrMttP2TUietO2RmqrOCzE/6Lclihox3eesQ80MwrpRt6Vb1AO+j+YIyoiUvDT2aBJjnWhO6oKSSa3kD6IphO/nWGL/0/z2zDPPRETTTEBQJvQH0RTGftf44LxEU+d8zHZe+RqGYfQAT76GYRg9oJXZYTQaJR2it5PUVUtzUpT5RCfccccdWZYHlpS3tnzns0mzaNJYa621IqJJa0jDRFu6mB0ipttM+sh2yrtOKvfQQw9l+fvf/36WS+FerDvbSBpE2sR6rLvuurOeERGxwQYbRETT2/3d7343y6K0cx19XcPU1FRSPtLAUqwp28C2U37UJcpQbeb/qVOimhFNalyLiFCdqWs08+gZXc0OixYtSl3gEeal9lH3WUeapdg+9r9Maptuumleo9488MADWX7wwQezTJlTXhpjTz31VF7bcMMNs6y5YFmxxjWUxg8jL6SDlAnNitSx++67L8s33HBDlmXS4jv23HPPLG+00UbFZ9O8Qb1QuGstDlj9NJeueOVrGIbRA1qtfOlcImjYlqGcXw8az7nqoIGfq2etxvj1e+yxx7LMGFnWZ5111snyeuutl+WlS5dGRHO1fu+992ZZTg7+f74YDAaNFZvAVV4pTpEy4XV+aSlXrZToIOGKmasCrma32WabLFPeki3lxzqrfl1WeePxuChLPkv15YqMTiYyGq44GKOr1cctt9yS16h3dFhyZchnU566X0wpotkH+l1XhjQajZJ9kNVwlVliHJQb+5zlrbbaKstarXNMUbbnnntulh9++OEsU4fYL+uvv35ENHWTzLGLU5Yo7Rbj8zW+qNdkQGR0F110UZa5GUYrUY4HPo/9QVbCMUMmIRnzd6yzHHJe+RqGYSxn8ORrGIbRA1o73LTEJ/3j0nzLLbeMiCa1u/TSS7N82WWXZZkOHtIm0To6Ikjta1tmGdO66667ZlkU4fHHH89rpLJdaWREc3tkba+43k8qTucFHQY0r1x99dVZ3mGHHSKiHsO79dZbZ3mLLbYoPvuee+7JsmJ62U+ksaJ1XZwow+Ew+44UrhSPyeeT1l1++eVZJq1kXg/RapoUalvSScFZJ8pHsqBpjPS/ZHJrA5pjqCvUc12nKYLOYzpqWTfKVlSX8aqkv2wHHd2M8/7oRz+a5c033zwimmZAQqYStmm+YEw445b5rO23335WvTlmKQc+g05BORk5BvfYY48scw6j7PlsXteY5jxI3ZMJy3G+hmEYyxk8+RqGYfSA1tEOpfSMXMorbpDbdxmFwLhJeppJf7Wlj8t8lrkNlZEPpCqknMccc8ys9xGKo+xCm0ajUZoCGI9JL7IoCOMOSbfZdnroKUN58eV5jmjSZ0ZP1HL+lrZkkirRg6x+6hLnOxwOk/7Ry06KL51hdAI9xzQlcIvyjjvumOWdd9453ydQHxipQArOZ5Nqy+RDGVM+7N8uGI/HGRnAfuH4UR/QJMc2Mc6Xpqaddtopy/L404xECn7ooYdm+ZJLLsky9Z96eNNNN82qJym7zEJdImMmJiZS12rRT5IV+5NZEDfbbLMs09zIMShZ/PZv/3Zeo25ybmD89L777ptljp+77rpr1r3cwq7yXOPHK1/DMIwe4MnXMAyjB7Ti2RMTE7n05jKd1ExU+fDDD89rXJqTSpNOlrIkkXqQcnB7JOkUKQcDv88+++yIaNJGUuCF0iZRjFqCZ9Ep0kRGXtSShes0iIjyCSGMfGAUCWWy++67Z5m0cbvttouIJr0lfVf/dkkwz6T7pMl8l7Y9sz217bLMLEV6rbbJ/BDR3C7LaBFSd5Zp8pEpqLYtWdS1y2aciF+Yg9RetptRK/LoM7KAkT4003B8sM7aVMTNJ/fff3+Wd9tttyz/zu/8TpZJ5bnR5Itf/GJERKy99tp5jeYf1bVLZMx4PM7fcRxQ76SXjHThWGN/nHHGGVmmLuy///4RUT+x4rOf/WyWFbEVEXH88cdnmfOcTJ+cMxixNZ+sgF75GoZh9ABPvoZhGD2gldlhcnIyTQWl6ISI6WU4NxFcddVVWb7iiiuyTBpeolOkY6RYOrAyohl0TipCT69o5j777FP8v2hd18ThooqkTdwYIFmxrqTjpC40V2y77bZZlseZ1IfPu/HGG7PMvBZsE6MJFLjPTR2kjaWDJecL0mtSZpoSZGaiGYoyo0mKekK9k06QPtJjTipOkwcpOD3UotX0gpdMSV2iYiKaJirKmiY8mdQ22WSTvMY2M8KF9bz++uuzLNrMd9BEJQoe0TQ1MPKBciyB5hj1a5fNSty4RSjrXsR01ALbw4xk7A/ORRwfyna28cYb5zVu6uHcwM0cNGnwuiI0mA2tlGHR0Q6GYRjLGTz5GoZh9IBW/Gk4HCZ1JeUp7bkmrWdCb+5TZ3o3erFFOUhJSY/oCWU9zjvvvCyTLopmkXYz8kHUvAudnJycTPMIzQf0wMsEw80hpDyMSKAnnh5xebApB9JqRm8cdthhWSYtuvLKK7MsqsjNB6Xz3rpQycnJyawnzQ7sN1FtRmYwHSA91TSdKM9AxLT3m3RvWSkyI5qmG5qzSmYMbjZYSA4QQdSZz6LeyBx17bXX5jVu+iDdJmgGUCpFmg6oV7feemuWGUFAGVHm0hH2CXVvIXlAJiYmsv84ZtmPBx54YEREXHjhhXmNUQs0DTzyyCNZpkwkN+VImXkvzRXUJ5oSOXep/6jfpTnKKSUNwzCWM3ROpl47UVXg14POm9/7vd/L8gknnJDl17/+9VnWF4ZfI8b5Mn6RTpzjjjsuy8qEFDH9dfqv//qvvMYVl57dJaZ1OBymTEpJ1VlfHnHCttMoz3opFjdiekXEFQEdUdy6zJUbVzDsEzkMzj///LzGVeVCYjcjplcm7Deu5KUTbA8dT1wFlY7yiZh2atCZRvZCdkOGRIcTHb1aKZIB8P9yDHWVCY/hot6K1fDZXJGTAbJ9XAkyblwrVT6DsatknFzZcas1V/xaeesU8JnPUB93PXJKTkT2LftU16njdCByrO+9997FNmgc0JFL1sexy3HFlStlrFhptpn/11wyl6545WsYhtEDPPkahmH0gG4Bi9E0VpPeyPhOpwbp5kEHHZRl0mrG/yqmlU4kUghSZWZMO+SQQ7JM+q6lPw3ipHKitV0dKvodnQCkzW984xsjoukAYVwmaTDl9oUvfCHLivmlTNjGGt067bTTsrzXXntlWbSNzyudFj1XMugaBoNByoTnZLFecujRcUPHCWk5+4XOW/UrzVPUS7aHsaSM7S3Fs9JMxsTqoqALMcWoXTSDkLrKKct20iFL0wyp9zve8Y4sK0aYMeMco3feeWeWmfmL+kGTje7nluPSOWddzXYafxyflI8OY2C/UW9YL8YH8x6NK5p4qB8cPzRH0ElO56T0grpJGctMOJcT3ytfwzCMHuDJ1zAMowe0MjtMTU2lZ5NUj3RB5gMuwZkBicv+a665Jss0TcgrT+9hbflOswM9mfTMiiYyMTK98PJ0dqHYExMTSd1Jxbh9WFRxv/32m1WniKaXmZEK9ESLvvM8PFIzntvG68xExT5TnbnVludRiR53NTuo7vRgk6LJDMD6KUH1zPfSRESaLD1hRjfGYtaOA2cEAymraK3MXhFNmYlWd5GJfqffUhaUu+rAazQvnXLKKVlW/GtE0+OvCBLSalJ2jiuaWBj/e+aZZ2ZZdJsRE9TvhYwfnmvHfi7FV9MURflQxwi2TSZJZkSkiYL7Ejh3UYdoHtIY472cfyQTx/kahmEsZ/DkaxiG0QNamR0WLVqUXtBath/RG9I8UktucyTNoFdRFICef1JzBkEzMTSp3M0335xleSZJ3+iF1/+7JFMnbaKZgLRMJg5uE6VMPvWpT2WZGwpKHmfSbv6fciCtpgmClFzXud2S8hOF6np0vGgXzTv0zus638nMUrWsb3yGNq3wGczSRtrJIHrqKzcL3XvvvRHR7Ef+rrQ1uA24oYBRJsxCp37kke7/9m//lmWOE55HxiyCosKk6aeeemqxTozmIPWmDoni186wE+3vMn6YAY8mt1JWQIJ6y+xljAahGeTiiy+OiObmEEY10IxBkwdNCewztZny48YQjWMnUzcMw1jO4MnXMAyjB7QyO4xGo9w8QO8pg6vldWe0ARN9815SaHpgFSReS4xMSsKAcVIO1k9HS5PKkr4txFvLDQW1c8JENUl3SXNIoWo0XV5XBt/X6ls6oj2i6RUWxWN/UD7zOfq6hpdffjnpGOtIiq/nss8YsUETCakd+01l0uvaphGaD2iOYL4N0VtuvCglyO4a7cCsgDRdsKzIoAsuuCCvkY5TXt/61reyfMQRR2RZ/UjTn0wqEc0NQDSFMfKDXn6ZMWpZBkubjOaLwWCQukA50Oyh9tNUyM00HFe77LJLlmlykyzYtzQpsD3sc0ZElDZR8aAIZhAs9fNMeOVrGIbRAzz5GoZh9IDWydTlCaZnkxsg5CkkVSLlqe3lZ3JxLdlJM7hB4bbbbssyaSO91PRYitaQsrN+CwHTBJYC8iOmKTS9yaTgbCdNDaRFkhVlTXpEjzkjJmjG4F5/yYceX0Y26P9d9utHTFO00tHsEdOmAlJj0mFSRppLuClEG3Zq0RCko5Qb72H9ZKagzGiKmQ+VXBb0W0by3H333VmWXKi/1BXmF6AO09wi2dO0xQ0UNPfVvPmMbJA+cbyyf2j2aQue4VbSj4jpNrM9vJfjiuZJtk1zBjdl0YxCcwXNVTRT0KwgGfJMOMpHERxzmWK88jUMw+gBnnwNwzB6QOuUklpG03xACiCKQi85A8BJIXk8NiFvNOkfKRGpA5f6pJ+sk2gE6QQpuChg100WouakqKS88uLzGgOySU34DJoxRKHYBtJfnq9FWk35sM2i26SujBCRV71r4LzaRK95KX0jTUXM78E2MMKB16WDbANNSzQ18JQOvodREOoTUmrqkZ7XRSYzQXNH6Vy+rbbaKq/xBIcaxaZpT/1I8xwjhCij2qYnnuYh+dZOfljoSTAa77Xj6jWnMNKD0VFsO0007EfpIU1b1D1GwHDeoZmHY0nmMkZl0FSkceyTLAzDMJYztM5qptmdK1uuMLQa4xeIxnuuhLjFlgZ2rfh4L50SXKFxFcLVMVdIvF/gF1/163J68cTERD6fqwWuSkvJoukMYNv5JS3FqXLFwT5ge7kS5D1cYWsVzq88V+NaFXRxLnE1wzZTD7RdnLGldBSynZQD21M6146rGcqSfcsVDMvSH65KuZrT6nEhK1/1AR2NJUdWbas6V1KUBVfBkuntt9+e16gf7Adut2VfEVoR8xmljGldYsLH43E+q5T1LmK6P6irHGtctZIVUy+UkY1yPeCAA2a1IaK5wuYcxFWw9JP9QYcg+6wGr3wNwzB6gCdfwzCMHtCKZ09MTCQFoXGcS3Ytw+nU4P9JsVkubfvjMr6WaLlGVfnbkiGfVG8hx6RPTk5mfUnrSyYMUhiaZUi32E46B/TbWnw12065sk2lOGj+ju/W77pQSZ5Vxvez7qKKpI+Md2ZdaQZgv4qG8l5SU5bZ3zQlkEpLFpQf61xyJrfBeDxOhzOpPx2KcrSxXsxYR4cbxxh1RSYNOlhpJqgdhMC+ImXXdZqzSPX1/67brku6RmeZ+p/6TvNCSa8iylvNaxnw2B80eVCGNCWof/hu6pXq6jhfwzCM5QyefA3DMHpAK7PD5ORkxsSS6pVMEKQNXJqTHrFMyqulPp/B//PdjBsmLSE9K3km+QzRhS5e7FqCedJG0dia6YT0iHXk80SbeI1xl6WMZTOfXZInoz5ITUU7u8iEW0b5TtIymVHYHmYyozmEzyiZD0jt5hMlUNsOq3v4O1Jh6RTr0Abcns/+oglKOkz92W677bLMbfisJ+mx+ozjgTJiP/MZpTHBe/gMmnRE9bvGhEvXatnk9FyaWdgvrCvNJUTpGTS5cC8C76ntI9D44RxGvZqPjnjlaxiG0QM8+RqGYfSAQRuqMBgMno2IJ5Z54y8vlo7H4/JBVRVYJrNhmZRhuczGr7JMWk2+hmEYxisDmx0MwzB6gCdfwzCMHuDJ1zAMowd48jUMw+gBnnwNwzB6gCdfwzCMHuDJ1zAMowd48jUMw+gBnnwNwzB6QKusZosXLx4rk1Yta4+SFTNpMTNKscwsSaX7mZWplpSb4HWWS+eQ8Zrq8dxzz8WLL77YKiP0iiuuOFaSbT6TmZZUF/6/9P6ZZcpY1ymTWntLSZ1nQvczwxWzOUneL7zwQrz00kutZLLyyiuPlU2t1seqY+2MuFoWrpIM53NqLrNg8Xkl+Szrfc8//3xrPYmIWGmllcbKhsX2lRLks+/ZLzWUxsR8xhp/V2u3fls7HVz4yU9+0lpXVlxxxbEymC3rvEC+s3ZvbUyUfjef3b2UW2kOqslVmGv8tJp8V1999fjgBz8YEc3DFqnYSunGjPJMW8d0h7UjvJVCkNnlmbqtNvGXUjBGTKen4yBlyjrV/6//+q+Lz50Lq6yyShx33HGz2sCUe+o0ppyjfJgGj53JEw6U7o8pIktp/yKasmKqwdIhkjzIkydJKCXkWWedFW2x2mqrxbvf/e6IaLaN7dchhTyJhO3hvUx7SbnpnpKsI5qy5GkqTOfJkzE0oJQ2dWY99O5PfvKT0QWrrrpqvPOd75xVN7Zb9WFKVB4EWgOfoWfXDlJl6kiOE7abp65oUuG9pZSxX/7yl5dZz5lYvHhxHH300RHRHD+E2sM0m6zfstKw8hl8R22irk2ofL/ewzmsdALK2WefXWxTRMvJdzwe5yCvdaCUh7kya18p/q40kVAZ2NlsMI9EIZ555pksa7XBHKpUxh/84AcR0S1P68TERE6IfCfrqPfynTw+h5Mic7tyYlL7+dGr5S4l7r333izz6BU9m/3I9nc9KkfQgOAg4UdB8mGfEJwgORgoV12vnWZNvaO8+QweGaO6sg9KJwt3OW5KWNaHWB8STriUG9/N61yo6Bm1U5/5bp6izFN7uTiRnNmXfB5l2AUa+6XTuiOmdYT/Z+7f+Zw6rrqzrqUFWsT8VsTSLY5Bfuz0/7l0xTZfwzCMHuDJ1zAMowe0MjuMRqO0e3DJTrui7HNcbtNmRxsjl/o8Emfp0qUR0aQepPR8BinUhhtumGXaAWU/I90k3V4IeHox6WrtJFaB7SXNufPOO7P8yCOPZHn99dePiOnTbSOaphrSMNLYddddt1HXmVhjjTWyTJnNx4k1F0S7aH5imyUz0uWnn346y7Rt0wTBOq611lqz3ku7HO3gfDaPcyrZ/qmvpNq144faoERDeU0UmtfYnzSxkEKXaDjlVjPNsExZ0OQl2bGvSvbkLqcXD4fDbB+fyX7UWGX9+H+arthHvF/yoSmKJgP2M8cr7+E7pZ+UO2Upc9VcJgyvfA3DMHqAJ1/DMIwe0MrswNNX6WklRDN5Gujdd9+dZdLGt73tbVneZJNNsizKQxpCMApCkQoREbfcckuWd9999yzfc889s56x+eabZ1kRE/OJp5yJRYsWZYQHaS4hWkS6S6p0xx13ZPnhhx/O8nrrrZdlUaEHH3xwVr0jmvSG9JBmh+uvvz7LolCkaaRYC6WSem7NEy6qSWpMWkczQY12l076ZVQDTR6UA6knzU/y/DPCoXQactfTX8bjcZoTWGfKXc+m7pMS1yIYSnHyHBtrr712lilDmurY1w888ECWZf5j6CP1RhS8S4TMeDwuxnzT7KXrpZOrI8rRIhFN85H0kPLbdttts7zBBhtkmeOY+kuzoiJDaqGf1OsavPI1DMPoAa1WvlNTUzmjc0XAFYZWaBdffHFe41fgsMMOyzID3PfZZ58sKzb1oYceymubbbZZ8RkMRr/xxhuzvOWWW2ZZzqp/+Zd/yWuMo9TKosuKZmpqKo3utR04+mJztcO20TGggPOIiE033TTLWr1zFS/H5Mx7ueJhPfbcc88sS8ZcKbCslU2XmNapqal8FldTbL9WmXSk8l1cRZElcCUihxtXPlwlUqd23HHHLF999dXFZ6ufyESo21oBdl35kjnW2qQxQVlwRUVnEGN0H3300SxrTGyxxRbF/3MzDZ3XlBGd6BdddFFERNx22215reTILTl0l4XxeJx6QV0pOcT5fDoEGedLRs42a4xus802xXpw/HBVzzFx++23z6pLrc3Sw7l27XnlaxiG0QM8+RqGYfSAVmaHiGk6SKpER9Jjjz0WEU1KTMcaqS/jNEkzRREef/zxvCbTQUSTNpIWbL311lneYYcdsnzJJZdERMQNN9yQ10i9SKHaYmJiImkv6Sjj/2RWoPmF9IeOPm4BvvDCC7Os9u+11155jY6aM888M8tHHXVUlq+88sos0xSj+F46DO67774si8p1caIMBoNijg86TCQr9lPN1EATzfbbb59l6RjbUIt3puypS7xf7+G9pJXUmS4YDAYp11rMucYETQ2k0k8++WSWSavPO++8LMvZfPDBBxefQUcUdYhONjri1G7qN8fdRhttFBHLToxTwnA4TBNCKR4+Ytq5xf6kM5pmAvYXr0uf2AbKgX3+lre8Jcu33nprlhl3r/tpKinln/H2YsMwjOUMnnwNwzB6QCuzw2AwSGpBDz1pobaQbrzxxnnt2GOPnfX/iOay/6Mf/WiWFU9Ijyuzc9FDzkxMu+yyS5ZPO+20We95+9vf3miLIArVZUvteDxOKsPf0+te8qIz1pLmF0aJMOZX9Jw08aabbsoy303TBU0tjBFW/1GujHuUCaKrTNRmmg8YPylTAU0GjE9mXSkrmbV4P+kqIz3Ytr333jvLpI/UQcV60utPD3cpb3MbjEajrCvNDtQVvYPtZ3wtxx37eY899siyzA40k1CvGOHwnve8J8uMnrjqqquyrPHN7f6UIfVmIaBMWFY/04zAuYGRSzRVyhwSMW1Go0zYt4yB5x4AmiloXpWJYVlx1452MAzDWM7gydcwDKMHtM5qJtrEZT+X5qIo9MqTPpM2nnzyyVkmzZGnlZ5CBsyTktF8QLMDKZmiIxgwT5ohitOVYitInMHeDNrWuw499NC8RkrEjSL06L71rW+d9T7+n+X99tsvy6UE4RFNuimzAL28NBFoK2XXaAfJlLpR8vDTFENKze2wjJBhfbUl/bLLLstrd911V6MewhNPPJFlbl3mOxX1QjrK5PXa6NM1mfp4PC4G5VPu2lbMPqSuMjqE9eRWc72Dm45ojmGkALcxMxqGJzDItMdIE5oARMGRyowBAAAMg0lEQVS7jh+Zo2qRCtLF2tbxWmJ1ylDmBpopGZ1A/fjGN76RZY5jvl/RShxTjACppUYgvPI1DMPoAZ58DcMwekDraAd5PBkwTxoj7952221X/D9p3s0335xl7tUWaDogDT3jjDOyzM0cX/va17JMeiGKwAP+GHUhStIlq9lwOMw20ZvPPAYyMTAnxXXXXZdl0i3KiqYWmXvoZd5///2zTI8472HwPYP5P/zhD0dEM2i/tKe9C8VmtAM95DRhKMqAlJuRDzSpkM6yPspdwHqTdtLzzbZTl0g35VWvHeQ4n/36c4GJwxmhQZPB/fffHxHN8cUoEGYLZCTLX/7lX2b5T//0TyOiGRnD39FcQXmSKtM0o+vUTcpW+tsl58VoNMpxwz5nZIHGMvuZ/6esaI7gQQHSN84/1BXOF8w5w76mqVWmDl6jSWxe58At8w7DMAzjFYcnX8MwjB7Q2uwgDzITmnOJrc0VpJg8l4zUnsHRfJ6C6umtZKJ00glSBFJ5BuaLztaORte7F+qt5TNJ+URdSHNIf5ikmbKiKUHUlNSMOS5IK+n9rZ0FtvPOO0dEM1UncwWITnWJdpiYmMjf06xAaqeAfv7/8ssvzzJlQp1hv8orTXMPy2wbzUzK9RHRNDHI9EUTBetRSh3aFqLobAfrLB2laYS6zw1GzEFw4oknZvnaa6+NiCZNZ3QNc5lQJ2q5FWSW48YpylB63SXxPucU9jN1WJtfGLlDswg309B0wk0j0jP2HU1uNKlcccUVWWZaTuqKzBjUFc4f6lPndjAMw1jO0Hrlq5meq0h+jRUrSCcBv678YvFLp5VYxLSz6pvf/GZeO+SQQ7LMrZTMxMWVIldZ+mKecMIJeU2OjYiFrfKmpqbyC8vf86urMrNGccu1nF8RzSxkzL6lWGAeyfQf//EfWea2yZKzL6K5bVLOzksvvTSv8WRkrcy7OJfG43GuNKgblIlWFFwtcbs0k8bTGcvVj1Yi7OvDDz88y7Vtx4zv5OpQcZzUXToBFwo6Z9kmrpi0Wqd+kg1xKy/HILcPq8922mmnvEYmxph6xg2THZCZKYaczI1OYs0JXbOaqU/ZL2TFqgv/T4cf76VMGIMrPSsdlRVRP22dq11uURcjopONccCq81xzile+hmEYPcCTr2EYRg9ovb1YBm0atrlkF51i7CJjTblVksbqP/7jP86ytoiS5nALKRM9k7KRepNyKiaQcbOkLQsBT6QlSF1EPehYoSOH8Zp0ep166qlZ1lZjUsO/+qu/yjK3bTMGkpSVv9U2cJp7SCVVj9qJzMuCnLA0E3AbtRwc/D/joEkZSf34DPUhzTOMYaX5gM+rZZ8TaKJg38oBvJDtxZIn30uno8aNnGYRTVPdm9/85iyzfayz5EHKS2c0TUHUFeoe9UJ15VZrOu1E9buebSfQJEDTmdIJMKaWpkyONV7nGNN19h0d1txazWfQoc8T1mW6oaObphrWvwavfA3DMHqAJ1/DMIwe0PoMN1E2ejZ1tHTEND3+0pe+lNe47fcP//APs3zNNddkmcnURWm4ffaLX/xilrntmB56not2/vnnZ1lUjdnQSPUWsj1yhRVWSHMHYxPpmdVW63e+8515jTJTHGNEs22kh7qfVJPRIHwGqRJpEeOmlWGNph9SUL57IaBMSY0lM24H5fuPPPLILDMK4vOf/3yWP/ShD0VEk8IzsT8jKWoZwBgRoCTqjLRghIZMJV3iWSOaWc2oK4wxFbWmqYVmNuoV9f0zn/lMltWnRxxxRF6jGY4x9cwqx8gOmuikQ5RhKcKpi1x4GEEpNj5iWibUVZqa2J/MLMboJ2VWZB0Zt0wzCs+CZN8w25mihWhq4O9kdnCcr2EYxnIGT76GYRg9oJXZgUHi9DBy+X7bbbfNusbNDfSiMpCc3noFypNCkjJ/7nOfy/LHPvaxLNO7S8+9zBukbPRoLuQMN0aAkDaxvjJx0ANKaktZHnDAAVlm9IY8yoxeYMQJt9IyeT0TkZPWKzicHmHKT5ERjDiZLyYmJjLqhXJg+7WVmFSNmfDoWT7llFOyTPOKqCcpOukjqTE3NVCu/K2C5KkbpY0HXTbjCKK9texa0nmaY5gon5sIuFniXe96V5ZPP/30iGhmt+Mx8rzOjQHcSkvd0kYM1onRI/Oh2HNB444mHo4l9R1NhRw/PAOR+kYoSoabao455pgs69y7iKZZRvPZzPfLREMzBjf7zEcWXvkahmH0AE++hmEYPaA1p9Rymh7GEl3gPmieJfWf//mfWWa2Ji7pla+BAfWkpMcdd1yWSaXPOeecLJPiiorwHaRQM9vWBoPBIGkjPa2kpmonPfX0otKzT8pTSlLPjG6M3iB9Z8A4c1+UjihndAWp5EIwOTmZ7SDNo8lAtJt0j2aoc889N8v0svNMLekdg+W5UYPee+oJ+4YRGBdccEFENE0UpLSvBOTZpyeeFFt9QF3k5oeDDjooy29605uyzE1IMsewHdyoQWpe8/7znUo4zyxglO1Csprxd7Uk9no/38nxzcgH5lrgGJcZi5FAzBHD/BDsG2aXI0rnztGsKXOej443DMNYzuDJ1zAMowd0PsONS3ouzVUmnaNnl1SanlZSIXkNuaSnF5teRb6H1JuUSwHmpFKkA6ILXcwOw+EwZcIUmQxqVzTDmWeemdcY9cFoB0YflKIzSJlpMqDJg/UgheIGDd1PGkaZib51TTCv39HUw/4RzeMZajSL0Ku/yy67FOt46623RkRTv+jJp4mGbafecQOD+p/0mmYg6UxXr/5oNEo9J8WmnksGlAXTPtLcx3SgjBbS/YwWoo5xvHKTCfuHphz9ln1CPZU8um6yUPsph1KUDfWa6VFrpiHmgtD8wc0tnEeYqpOJ7ik36oLqx3pyE8h8ZOGVr2EYRg/w5GsYhtEDWpsdtMxm8Dk9jKIO9HKT5my//fZZpgmCpzyIxpQC4COax8XTg147gUAB2aSsTI8nOkOvcxuIYtCUQYomDzc9zvTWkh7xGaSBCnpnKkyaNihj0mLKh7SodIQ5A9cXkiZw0aJFSUtJ82jiUHtolmDbudGBOQxIpUUVuSGAIDUmpaU5gvXT/dQ7ngTCe7uAR8eTQpeiDygrjjWOGeowqbKewb7j72qRMUz3ylSieh5NUKz/zPvaomTGIZ2XqY1zAHO6sL9oqmOEi8Yb9Y3PY64VjpNaBJBkwXHMOc+5HQzDMJZTtFr5Tk5O5peAqxTO+Nrayq8Hty3yC0wDNr+qit+kU4+/ozOCDhuuIOmIU1Ymfk25UlBdu2yl/fnPf54rWq40uHLT6olfQZ6QyjhFypLOFTEDtp3tpaOJbeM7+ZXWV58OPLb/lTrXjs/kqkT6w9UbVypkDmQsZD2qW22rLuXDmHGu9ikTrWz5vFocZxcMh8NsS221rpUZt4gzMx1XbnS4cnwo/ptyoyzIwOiEpgOKv9V1voMOXo3drnHyWrmyXzh/SFfYF6xrbR7hqlW6wjFVO7eNuscymbHaz1U379X4d5yvYRjGcgZPvoZhGD2gPc/+/8HlO+mCluM0ZjMZNrMElWJtI6YdDHwGHQCkXqTY3MZcotukUjQLiG52oU2vetWrMs6QZhLSH1FhxiMeddRRWSbFJJ1THCvrS8caqSQpFukP6RnrpOfxGn8n80YXJwodS9QNmjDU96R7rCvrwmewvuo3mnuoD4x9Zd9yKyn1Su+h3vF9Mgl1OSI94he0Wc8mrSZtltOPfUu51ZLc83lqK6/RDMf3UbY1k42exzFK04xMKF0dbnM9M2Ja3iVTSETTCU3zUkkmBPuWdWc7Web9cuhTftRD6dVcDmuvfA3DMHqAJ1/DMIwe0NrsIApAjyk99Iq1pRebYPwtKWeJUtSOgqfJgNcZCUCKoKU/PdslL3aXrbQvv/xyUn7GZpY8+6RB9FQzjpP1Yn1EPUmxmE2OpphSdqWIprwlE1Lokue2S5wvt4zSQ0z6LPMK+51tL9078x7Js+aRpimG7WRcLfukZJ5iPahrCwXfyzaJbjOqgxSbukLzCJ+ncUD9oU7U+oT1YLm0rboUJdPF7MDDCDiPsE8FmiIoB5piqK8sq46UJccP7y3FMM+sn0A5cV6aT8oCr3wNwzB6gCdfwzCMHjBoQysHg8GzEfHEMm/85cXS8Xj8umXfNg3LZDYskzIsl9n4VZZJq8nXMAzDeGVgs4NhGEYP8ORrGIbRAzz5GoZh9ABPvoZhGD3Ak69hGEYP8ORrGIbRAzz5GoZh9ABPvoZhGD3Ak69hGEYP+P8Ao/cTxqte7W4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x432 with 25 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_hidden(res.x)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
